ファイルをダウンロードしてリモートディレクトリに移動するLFTPスクリプト

ファイルをダウンロードしてリモートディレクトリに移動するLFTPスクリプト

私は以下を見つけました ファイルをダウンロードする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

おすすめ記事