私はrsyncを使用して、Syncthingを介して他のデバイスと同期しているフォルダ(意図的に省略されたディレクトリ)にいくつかのファイルをコピーします。
find /mnt/media/ -name "*.epub" > /home/user/.logs/rsync/epub-paths.txt && \
rsync --archive --files-from=/home/user/.logs/rsync/epub-paths.txt \
--no-relative / /home/user/Documents/ebooks/
これらのファイルは私が作成したものではなく、ファイル名にスペースと文字が含まれることが多く、シェルで問題になります。悲しいことにマウントされたソースドライブのすべての名前を簡単に変更することはできません。
使う予定ですデトックスターゲット電子ブックディレクトリは再帰的に処理されますが、プログラムは既存のファイルを置き換えません。この場合、ファイルはすべて同じです。残念ながら、すべての重複エントリを削除しても、rsyncはスクリプトを実行するたびに(現在毎日)ギガバイトのデータを無駄に送信します。使用デュピュあるいは、後で重複ファイルを削除する同様の方法は、実用的な解決策ではありません。
つまり、ローカルデータを変更するのではなく、ターゲットに書き込む前にrsync転送にファイル名(およびフォルダがある場合)を書き換えてください。
ベストアンサー1
NULL で終わるパラメーターを使用することもできます。
find /mnt/media/ -name '*.epub' -print0 |
rsync -as --files-from=- --from0 --no-relative / /home/user/Documents/ebooks
またはfind
、POSIXを使用していてオプションがない場合は、-print0
少し包括的な次のソリューションを試してください。
find /mnt/media/ -name '*.epub' |
rsync -as --files-from=- --no-relative / /home/user/Documents/ebooks