私は以下を見つけました ファイルをダウンロードするLFTPスクリプト。スクリプトは適していますが、現在は正常な転送後にファイルを削除します。しかし、転送後にファイルをリモートサーバー上の他のディレクトリに移動したい(バックアップなど)。検索しましたが、mmvコマンドのパラメータが見つかりませんでした。
誰かがこれを行う方法を教えてもらえますか?
ありがとうございます。
ベストアンサー1
0. mgetユーザーマニュアル
lftp :~> ? mget
- -c 継続、転送再開
- -dはファイルと同じ名前のディレクトリを作成し、
現在のディレクトリの代わりにその中にファイルを置きます。 - -E は、正常な転送後にリモートファイルを削除します。
....
1. リモートファイルの削除
リモートファイル削除オプションの問題- 金利:
mget -E $REGEX
それに変えるmget $REGEX
2. ファイルの移動
mv
ファイル名を変更するコマンド
mmv
ファイル移動コマンド
移動中に問題が発生した場合、通常はfileA.txt(userAが作成)、Folder_Backup_B(userBが作成)などの資格情報が原因ですが、
fileA.txtをFolder_Backup_Bに移動してmmv: Access failed: 550 Rename failed.
同じユーザーに必要なmmvを取得します(またはルートスーパーユーザーのようなもの)作成/コピー/移動
私のテストには次のディレクトリがあります。
リモートディレクトリ
- /ホーム/tyacode/test_ftp#REMOTE_DIR
- /ホーム/tyacode/バックアップ#REMOTE_BACKUP_DIR
lftpを使用すると、ソース/ホームからバックアップフォルダにアクセスできないため、変数を変更します。
REMOTE_DIR="/home/tyacode/test_ftp/"
REMOTE_BACKUP_DIR="../backup/"
ホストされているFTPを使用すると、状況が変わる可能性があります。
3. スクリプトの変更
#!/bin/bash
PROTOCOL="ftp"
URL="server.example.com"
USER="user"
PASS="password"
REGEX="*.txt"
LOG="/home/user/downloads/script.log"
LOCAL_DIR="/home/user/downloads"
REMOTE_DIR="dir/remote/server/file_directory"
REMOTE_BACKUP_DIR="dir/remote/server/backup_directory"
cd $LOCAL_DIR
if [ ! $? -eq 0 ]; then
echo "$(date "+%d/%m/%Y-%T") Cant cd to $LOCAL_DIR. Please make sure this local directory is valid" >> $LOG
fi
lftp $PROTOCOL://$URL <<- DOWNLOAD
user $USER "$PASS"
cd $REMOTE_DIR
mget $REGEX
mmv $REGEX $REMOTE_BACKUP_DIR
DOWNLOAD
if [ ! $? -eq 0 ]; then
echo "$(date "+%d/%m/%Y-%T") Cant download files. Make sure the credentials and server information are correct" >> $LOG
fi