rsync
実行後にリモートサーバーに送信されるファイルのリストを取得するために、次のコマンドを実行しました。
rsync -avzm --stats --safe-links --ignore-existing --dry-run --human-readable /tmp/test REMOTE-HOST:/tmp/data/ >> /tmp/transfer.log
ファイルリスト(すべてのPDF)を取得するには、次のコマンドを実行しました。
grep 'pdf$' transfer.log > files.txt
ファイルの絶対パスを表示できません。
test/2103/0E/210321449902_NR_1/210321449902-1-A4-NB.pdf
test/2103/0E/210321481320_NR_1/210321481320.AKPML.pdf
test/2103/0E/210321779915_NR_1/210321779915-1-A4-NB.pdf
test/2103/0E/210321959975_NR_1/210321959975-01-A4-NB.pdf
rsync
ファイルの絶対パスを取得するために練習を実行するときにどのようなオプションを使用する必要がありますか?
GNUを使用してファイルを一覧表示し、複数のファイルを実行できるようにこのファイルのリストを使用する必要がありますcat
。 (良いrsync
parallel
これ質問)
答え1
パスはソース(および宛先)に基づいて報告されます。あなたの場合は指定されたソースルートがあるので、フルパスを生成するには、/tmp/test
サンプルファイルセットの前にこのプレフィックスを付ける必要があります。ただし、ソースツリー/
の内容がターゲットに直接到達するようにソースツリーを終了する必要があるため、状況はそれほど簡単ではありません。ご覧のとおり、実際のプレフィックスはまさに/tmp
それ/tmp/test
であり、test
コピーされたファイルに含まれています。だから...
sed
これには他の適切なツールを使用できます。
sed -n '/pdf$/s!^!/tmp/!p' transfer.log > files.txt
# ^^^^^ the transfer prefix
cat files.txt
/tmp/test/2103/0E/210321449902_NR_1/210321449902-1-A4-NB.pdf
/tmp/test/2103/0E/210321481320_NR_1/210321481320.AKPML.pdf
/tmp/test/2103/0E/210321779915_NR_1/210321779915-1-A4-NB.pdf
/tmp/test/2103/0E/210321959975_NR_1/210321959975-01-A4-NB.pdf
答え2
--out-format
オプションを使用してすべてのフォーマットを指定できます。
あなたの場合は、--out-format='/%f%L'
コマンドに以下を追加します。
rsync -avzm --stats --safe-links --ignore-existing --dry-run --human-readable --out-format='/%f%L' /tmp/test REMOTE-HOST:/tmp/data/ >> /tmp/transfer.log