たとえば、Linuxサーバーにデータベースのバックアップがあり、それをリモートFTPにアップロードするスクリプトを記述したいと思います。 put
コマンドを試しましたが、一度に転送できるファイルは1つだけです。次に、mputコマンドを試しましたが、転送したいファイルの疑問符が表示されます(間違って使用している可能性がありますか?..)
私はこれを試しました:
#!/bin/bash
ftp -n <<EOF
open ftp.server.com
user name password
cd backup
mput /backup/*
EOF
しかし、それは機能しません。転送したいファイルの名前を名前の最後に疑問符を付けて出力します。私は何かが足りないのですか、それとももっと簡単な方法がありますか?
ncftp
を見てください。この目的のためにスクリプト化できるユーティリティ(ncftpput
)が付属しています。
_$ ncftpput -R ftp.server.com /remote/path /backup
_
_-R
_フラグは、再帰モードを意味します。認証の詳細は別のファイルに入れることができます。詳細は、マンページ( ncftpput(1)
)を参照してください。
もう1つの方法は、FTPホストをマウントされたディレクトリとして公開するFuseファイルシステムドライバーである CurlFtpFS を使用することです(cp
を含む通常のツールでこれらのファイルにアクセスできます)。それがどれほどうまく機能するかはわかりませんが、すばやくグーグルで回ると非常に有望に見えます。 CurlFtpFSは、実際にはFuseよりもさらに遡るので、安定している必要があります。
これを使用するには、ディストリビューションに適切なパッケージをインストールし(たとえば、ArchとDebianはパッケージ名curlftpfs
を使用します)、Fuse
モジュールをロードし、 Sudo curlftpfs ftp.example.com /mnt/ftp/ -o user=username:password,allow_other
、サーバー名、マウントポイント、ユーザー名、パスワードを適切な値に置き換えます。
リンク先のページに詳細がありますが、それで始められるはずです。
あなたはlftpを使うことができます
lftp ftp://user:[email protected] -e "mirror -e -R /local/folder /remote/folder ; quit"