web-dev-qa-db-ja.com

LinuxサーバーからFTPに複数のファイルをアップロードする方法

たとえば、Linuxサーバーにデータベースのバックアップがあり、それをリモートFTPにアップロードするスクリプトを記述したいと思います。 putコマンドを試しましたが、一度に転送できるファイルは1つだけです。次に、mputコマンドを試しましたが、転送したいファイルの疑問符が表示されます(間違って使用している可能性がありますか?..)

私はこれを試しました:

#!/bin/bash
ftp -n <<EOF
open ftp.server.com
user name password
cd backup
mput /backup/*
EOF

しかし、それは機能しません。転送したいファイルの名前を名前の最後に疑問符を付けて出力します。私は何かが足りないのですか、それとももっと簡単な方法がありますか?

8
Andrius

ncftpを見てください。この目的のためにスクリプト化できるユーティリティ(ncftpput)が付属しています。

_$ ncftpput -R ftp.server.com /remote/path /backup
_

_-R_フラグは、再帰モードを意味します。認証の詳細は別のファイルに入れることができます。詳細は、マンページ( ncftpput(1) )を参照してください。

9
dawud

もう1つの方法は、FTPホストをマウントされたディレクトリとして公開するFuseファイルシステムドライバーである CurlFtpFS を使用することです(cpを含む通常のツールでこれらのファイルにアクセスできます)。それがどれほどうまく機能するかはわかりませんが、すばやくグーグルで回ると非常に有望に見えます。 CurlFtpFSは、実際にはFuseよりもさらに遡るので、安定している必要があります。

これを使用するには、ディストリビューションに適切なパッケージをインストールし(たとえば、ArchとDebianはパッケージ名curlftpfsを使用します)、Fuseモジュールをロードし、 Sudo curlftpfs ftp.example.com /mnt/ftp/ -o user=username:password,allow_other 、サーバー名、マウントポイント、ユーザー名、パスワードを適切な値に置き換えます。

リンク先のページに詳細がありますが、それで始められるはずです。

3
a CVn

あなたはlftpを使うことができます

lftp ftp://user:[email protected] -e "mirror -e -R /local/folder /remote/folder ; quit"
3
TheFoOL