見つかったファイルを送信するには、scp または rsync で find を使用します。

見つかったファイルを送信するには、scp または rsync で find を使用します。

専用のファイル タイプを検索し、見つかったらそのファイルとディレクトリ構造をリモート サーバーにコピーする簡単なコマンドを実行しようとしています。

例えば:

find Source/ -name *.CR2 | xargs -d '\n' cp --parents -t /STORAGE/location/ 

この場合、見つかったファイルを取得し、親フォルダー構造を持つ別のディレクトリにコピーします。 rsync または scp を使用して同じことを実行したいと思います。

以下のコードにいくつかの変更を試みましたが、うまくいきませんでした。

find /src/dir/ -name *.CR2 -printf %P\\0 \ | rsync -av -e ssh --files-from=- --from0 /src/dir/ remote@server:/Storage/

ご協力いただければ幸いです。

私は何年にもわたる家族の写真を整理しているところですが、zfs アレイの 1 つのディレクトリで写真を探して同じアレイの別の場所に書き直す (これは時間がかかります) のではなく、写真を探して別のマシンに送信し、そこで写真をタイプ別に分類し、 を実行してから を実行してfdupes日付phockup別に並べ替えたいと思っています。この方法で実行すれば、失敗した場合でも元のファイルは安全です。

編集: 私の質問に答えてくれた皆さんに感謝します。幸い、あなたが返信する前に解決策を見つけましたが、残念ながら、解決策がどれほど遅くなるかについては考えていませんでした。そのため、以前と同じ方法で実行することにしました。

これは私にとってはうまく機能したコードでした。ただし、すべてのファイルにパスワードを入力しなくても済むように、適切に機能させるにはいくつかの ssh キーのハンドオフが必要でした。

find Sorted/ -name *.JPG -exec rsync -a -e ssh --relative '{}' usr@remote:/1/2/3/ ';'

言及されている他の推奨事項のいくつかを試して、より高速かどうかを確認しますが、現状では、バックグラウンドで実行されるシェル スクリプトを作成するだけで済みました。

再度、感謝します!

答え1

find Source/ -type f -name '*.CR2' -print0 |
    rsync --dry-run -av --files-from - --from0 . remote@server:/Storage/

--dry-run計画している内容に満足したら削除します。

答え2

以下のコマンドを使用できます

 find  path -type f -iname "filename" -exec scp {} destinationhost:/var/tmp/ \;

関連情報