Unixでlftpを使用してリモートからローカルにファイルをコピーする

Unixでlftpを使用してリモートからローカルにファイルをコピーする

もともとサーバーエラーにこの記事を投稿しましたが、大きな関心を受けませんでした。ここで誰かが助けてくれることを願っています。

リモートFTPサーバーからローカルディレクトリにいくつかのファイルをコピーするスクリプトを作成しようとしています。結局、変更された日付でフィルタリングできるようにしたいのですが、今は簡単なディレクトリコピーへのハンドルを取得したいと思います。私はlftpミラーコマンドを使用する多くの例を見ましたが、これまではそれらのどれも機能しないようです。現在、次のコマンドがあります。

lftp -u myuser ftp.myserver.net -e 'set ftp:ssl-allow no;mirror -c --verbose eyerep-test/outgoing/archive ~/eyerep-files/outgoing;quit;'

コマンドを実行すると、サーバーに接続してミラーコマンドを実行しようとしますが、完了すると、マイコンピュータの〜/ eyerep-files / outgoingフォルダにコピーされたファイルは表示されません。また、lftpを使ってリモートに接続し、一度に1つのコマンドを実行してみました。私は同じ結果を得ました。私はここで何が間違っているのかわかりません。このコマンドが機能しない理由を説明できる人はいますか?

修正する: これがリモートサーバーで問題にならないことを確認するために、パブリックFTPサーバーに対していくつかのコマンドを実行して、何が起こっているのかを確認することにしました。

私は走る:

cd /home/pbuchheit/eyerep-files
lftp apache.cs.utah.edu
cd apache.org/zzz
mirror -c --transfer-all --verbose=2 --script=cmd.log
quit

次のコマンドは cmd.log ファイルに書き込まれますが、ディレクトリを見ると、実際にコピーする必要があるファイルやディレクトリは表示されません。

get -O /home/pbuchheit/eyerep-files ftp://apache.cs.utah.edu/apache.org/zzz/HEADER
get -O /home/pbuchheit/eyerep-files ftp://apache.cs.utah.edu/apache.org/zzz/HEADER.html
get -O /home/pbuchheit/eyerep-files ftp://apache.cs.utah.edu/apache.org/zzz/HEADER.txt
get -O /home/pbuchheit/eyerep-files ftp://apache.cs.utah.edu/apache.org/zzz/README
get -O /home/pbuchheit/eyerep-files ftp://apache.cs.utah.edu/apache.org/zzz/README.html
get -O /home/pbuchheit/eyerep-files ftp://apache.cs.utah.edu/apache.org/zzz/README.txt
get -O /home/pbuchheit/eyerep-files ftp://apache.cs.utah.edu/apache.org/zzz/checkrev.py
get -O /home/pbuchheit/eyerep-files ftp://apache.cs.utah.edu/apache.org/zzz/find-ls.gz
get -O /home/pbuchheit/eyerep-files ftp://apache.cs.utah.edu/apache.org/zzz/status.json
get -O /home/pbuchheit/eyerep-files ftp://apache.cs.utah.edu/apache.org/zzz/time.txt
get -O /home/pbuchheit/eyerep-files ftp://apache.cs.utah.edu/apache.org/zzz/update-files.sh
mkdir file:/home/pbuchheit/eyerep-files/checker-tests
get -O /home/pbuchheit/eyerep-files/checker-tests ftp://apache.cs.utah.edu/apache.org/zzz/checker-tests/README.html
chmod 644 file:/home/pbuchheit/eyerep-files/checker-tests/README.html
mkdir file:/home/pbuchheit/eyerep-files/mirror-tests
get -O /home/pbuchheit/eyerep-files/mirror-tests ftp://apache.cs.utah.edu/apache.org/zzz/mirror-tests/1mb.img
get -O /home/pbuchheit/eyerep-files/mirror-tests ftp://apache.cs.utah.edu/apache.org/zzz/mirror-tests/1mb.img.7z
get -O /home/pbuchheit/eyerep-files/mirror-tests ftp://apache.cs.utah.edu/apache.org/zzz/mirror-tests/1mb.img.bz2
get -O /home/pbuchheit/eyerep-files/mirror-tests ftp://apache.cs.utah.edu/apache.org/zzz/mirror-tests/1mb.img.tar.gz
get -O /home/pbuchheit/eyerep-files/mirror-tests ftp://apache.cs.utah.edu/apache.org/zzz/mirror-tests/1mb.img.tgz
get -O /home/pbuchheit/eyerep-files/mirror-tests ftp://apache.cs.utah.edu/apache.org/zzz/mirror-tests/1mb.img.zip
get -O /home/pbuchheit/eyerep-files/mirror-tests ftp://apache.cs.utah.edu/apache.org/zzz/mirror-tests/Readme.txt
mkdir file:/home/pbuchheit/eyerep-files/mirror-tests/redirect-test
chmod 644 file:/home/pbuchheit/eyerep-files/mirror-tests/1mb.img
chmod 644 file:/home/pbuchheit/eyerep-files/mirror-tests/1mb.img.7z
chmod 644 file:/home/pbuchheit/eyerep-files/mirror-tests/1mb.img.bz2
chmod 644 file:/home/pbuchheit/eyerep-files/mirror-tests/1mb.img.tar.gz
chmod 644 file:/home/pbuchheit/eyerep-files/mirror-tests/1mb.img.tgz
chmod 644 file:/home/pbuchheit/eyerep-files/mirror-tests/1mb.img.zip
chmod 644 file:/home/pbuchheit/eyerep-files/mirror-tests/Readme.txt
chmod 755 file:/home/pbuchheit/eyerep-files/mirror-tests/redirect-test
mkdir file:/home/pbuchheit/eyerep-files/perms
get -O /home/pbuchheit/eyerep-files/perms ftp://apache.cs.utah.edu/apache.org/zzz/perms/file444
get -O /home/pbuchheit/eyerep-files/perms ftp://apache.cs.utah.edu/apache.org/zzz/perms/file644
get -O /home/pbuchheit/eyerep-files/perms ftp://apache.cs.utah.edu/apache.org/zzz/perms/file664
mkdir file:/home/pbuchheit/eyerep-files/perms/dir555
get -O /home/pbuchheit/eyerep-files/perms/dir555 ftp://apache.cs.utah.edu/apache.org/zzz/perms/dir555/file444
get -O /home/pbuchheit/eyerep-files/perms/dir555 ftp://apache.cs.utah.edu/apache.org/zzz/perms/dir555/file644
get -O /home/pbuchheit/eyerep-files/perms/dir555 ftp://apache.cs.utah.edu/apache.org/zzz/perms/dir555/file664
chmod 644 file:/home/pbuchheit/eyerep-files/perms/dir555/file444
chmod 644 file:/home/pbuchheit/eyerep-files/perms/dir555/file644
chmod 644 file:/home/pbuchheit/eyerep-files/perms/dir555/file664
mkdir file:/home/pbuchheit/eyerep-files/perms/dir755
get -O /home/pbuchheit/eyerep-files/perms/dir755 ftp://apache.cs.utah.edu/apache.org/zzz/perms/dir755/file444
get -O /home/pbuchheit/eyerep-files/perms/dir755 ftp://apache.cs.utah.edu/apache.org/zzz/perms/dir755/file644
get -O /home/pbuchheit/eyerep-files/perms/dir755 ftp://apache.cs.utah.edu/apache.org/zzz/perms/dir755/file664
chmod 644 file:/home/pbuchheit/eyerep-files/perms/dir755/file444
chmod 644 file:/home/pbuchheit/eyerep-files/perms/dir755/file644
chmod 644 file:/home/pbuchheit/eyerep-files/perms/dir755/file664
mkdir file:/home/pbuchheit/eyerep-files/perms/dir775
get -O /home/pbuchheit/eyerep-files/perms/dir775 ftp://apache.cs.utah.edu/apache.org/zzz/perms/dir775/file444
get -O /home/pbuchheit/eyerep-files/perms/dir775 ftp://apache.cs.utah.edu/apache.org/zzz/perms/dir775/file644
get -O /home/pbuchheit/eyerep-files/perms/dir775 ftp://apache.cs.utah.edu/apache.org/zzz/perms/dir775/file664
chmod 644 file:/home/pbuchheit/eyerep-files/perms/dir775/file444
chmod 644 file:/home/pbuchheit/eyerep-files/perms/dir775/file644
chmod 644 file:/home/pbuchheit/eyerep-files/perms/dir775/file664
mkdir file:/home/pbuchheit/eyerep-files/perms/dr-xr-xr-x
get -O /home/pbuchheit/eyerep-files/perms/dr-xr-xr-x ftp://apache.cs.utah.edu/apache.org/zzz/perms/dr-xr-xr-x/r-xr-xr-x
chmod 755 file:/home/pbuchheit/eyerep-files/perms/dr-xr-xr-x/r-xr-xr-x
chmod 644 file:/home/pbuchheit/eyerep-files/perms/file444
chmod 644 file:/home/pbuchheit/eyerep-files/perms/file644
chmod 644 file:/home/pbuchheit/eyerep-files/perms/file664
chmod 755 file:/home/pbuchheit/eyerep-files/perms/dir555
chmod 755 file:/home/pbuchheit/eyerep-files/perms/dir755
chmod 755 file:/home/pbuchheit/eyerep-files/perms/dir775
chmod 755 file:/home/pbuchheit/eyerep-files/perms/dr-xr-xr-x
mkdir file:/home/pbuchheit/eyerep-files/rsync-module
get -O /home/pbuchheit/eyerep-files/rsync-module ftp://apache.cs.utah.edu/apache.org/zzz/rsync-module/apache-dist
chmod 644 file:/home/pbuchheit/eyerep-files/rsync-module/apache-dist
chmod 644 file:/home/pbuchheit/eyerep-files/HEADER
chmod 644 file:/home/pbuchheit/eyerep-files/HEADER.html
chmod 644 file:/home/pbuchheit/eyerep-files/HEADER.txt
chmod 644 file:/home/pbuchheit/eyerep-files/README
chmod 644 file:/home/pbuchheit/eyerep-files/README.html
chmod 644 file:/home/pbuchheit/eyerep-files/README.txt
chmod 755 file:/home/pbuchheit/eyerep-files/checkrev.py
chmod 755 file:/home/pbuchheit/eyerep-files/update-files.sh
chmod 755 file:/home/pbuchheit/eyerep-files/checker-tests
chmod 755 file:/home/pbuchheit/eyerep-files/mirror-tests
chmod 755 file:/home/pbuchheit/eyerep-files/perms
chmod 755 file:/home/pbuchheit/eyerep-files/rsync-module

アップデート2

@aviroが提案したように、私は後で何が起こっているのかを見るためにstraceを実行してみました。コマンドは次のとおりです。

strace -f -yy -e トレース=ファイル -q -o lftp.strace lftp[Eメール保護]

ミラーコマンドを実行すると、次のような結果が出力されます。

429   openat(AT_FDCWD, ".", O_RDONLY|O_DIRECTORY) = 5</home/pbuchheit/eyerep-files>
429   getcwd("/home/pbuchheit/eyerep-files", 4096) = 29
429   chdir("/home/pbuchheit/eyerep-files") = 0
429   chdir("/home/pbuchheit/eyerep-files") = 0
429   chdir("/home/pbuchheit/eyerep-files") = 0
429   openat(AT_FDCWD, "/home/pbuchheit/eyerep-files", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 6</home/pbuchheit/eyerep-files>
429   lstat("/home/pbuchheit/eyerep-files/.", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
429   openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 6</etc/passwd>
429   openat(AT_FDCWD, "/etc/group", O_RDONLY|O_CLOEXEC) = 6</etc/group>
429   lstat("/home/pbuchheit/eyerep-files/..", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
429   lstat("/home/pbuchheit/eyerep-files/cmd.log", {st_mode=S_IFREG|0664, st_size=0, ...}) = 0
429   lstat("/home/pbuchheit/eyerep-files/lftp.strace", {st_mode=S_IFREG|0664, st_size=14407, ...}) = 0
429   openat(AT_FDCWD, "/etc/localtime", O_RDONLY|O_CLOEXEC) = 5</usr/share/zoneinfo/posixrules>
429   stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3545, ...}) = 0
429   stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3545, ...}) = 0

残りの出力は最後の行を何千回も繰り返しただけです。

アップデート3:

私はこれをテストするのを助けるためにチームから他の人を引き付けました。彼は私と同じUbuntuバージョンを使用するVMを持っていて、lftpをテストしたときに同じ結果を得ました。彼は以前のバージョン(16.04)でもテストし、そこでも動作しました。以前のバージョンで動作するため、タイムゾーンの設定に関連しているようですが、まだ解決策がわかりません。

ベストアンサー1

おすすめ記事