1.ファイル名の特殊文字に関する問題
ファイル名に特殊文字はありますか?これらのファイルを書き込んでいるファイルシステムによっては、.
たとえばファイルの前にドット()を付けることができない場合があります。
2. rsyncの変更時間とwebdav2に関する問題
このブログ投稿で、rsync
webdav2マウントされたbox.comディレクトリ全体でファイルの変更時間の書き込み/追跡に問題があると説明されています。
問題は、マウントされたファイルシステムで次のように表示されます。
david@sydney:~/Pictures$ ls -l /mnt/box/bwca/08/09/IMG_3084.CR2
-rw-r--r-- 1 david david 12564061 Aug 14 16:08 /mnt/box/bwca/08/09/IMG_3084.CR2
david@sydney:~/Pictures$ ls -l 2012/08/09/IMG_3084.CR2
-rw-rw-r-- 1 david david 12564061 Aug 9 13:00 2012/08/09/IMG_3084.CR2
同じ記事で回避策が示されました。
$ rsync -avhP --size-only --bwlimit=64 2012/08 /mnt/box/bwca/
これはOKの使用方法ですrsync
が、チェックサムではなく、サイズに基づいてファイルを比較するだけです。
3. davfs2(WebDAV)に関する問題
私はこのスレッドに出くわしました:davfs2経由のrsync?sourceforge上のWebDAV(davfs)フォーラムで。誰かが、WebDAVを使用してオンラインストレージプロバイダーをマウントし、WebDAV経由でマウントされたストレージに対してrsyncを実行したいという同様の状況について問い合わせていました。これは、WebDAVの開発者(Werner Baumann)の 1人がこのトピックについて言わなければならなかったことです。
ヴェルナーの反応の抜粋
davfs2は完全なファイルのみをアップロードします。これは、rsyncが通常行うインクリメンタルなことを実行できません。これにより、rsyncが非常に効率的になります。
davfs2はディスク上のローカルキャッシュを使用します。これにより、応答性が向上し、アプリケーションもこれから利益を得るはずです。ただし、これにはローカルディスク領域が必要です。キャッシュサイズを大きくして、rsyncがローカルキャッシュでほとんどの作業を行えるようにする必要があります。rsyncがすでに完了している場合、davfs2はほとんどのファイルをバックグラウンドでアップロードします。
ヴェルナーは次のことを提案し続けます
この場合、これは不利になる可能性があります。rsyncがリモートホスト上のファイルを読み取るとき、davfs2によってローカルキャッシュに転送する必要があります(まだそこにない場合)。これにより、プロセスが本当に不必要に遅くなる可能性があります。rsyncはあなたのケースでは洗練されたコピープログラムとしてのみ機能するので、代わりにcpを使用する方が良いでしょう。cpには、davfs2ファイルシステム(= smartdrive)のファイルよりも新しいファイルのみをコピーするオプション(-u)があり、ファイルを読み取る必要はありませんが、mtimeのようなファイルメタデータのみを読み取ります。
"cp -pru directory / to / backup dav /"のようなコマンドでうまくいくかもしれません。それはファイルをダウンロードしないと思います(rsyncはそうかもしれませんが、私はわかりません)(cpとrsyncのマニュアルを見てください)。
オプション?
@Anthonが示唆しているように、このcp -u
メソッドを使用してファイルをコピーできます。この方法は、ファイルのサイズのみを比較要素と見なしているため、完全に信頼できるわけではないことを理解しています。
ファイルを比較するときに変更時刻のみを確認するものは使用しないでくださいcp -pru
。ヴェルナーはこのスレッドで理由を説明します:
mod時間に関する問題の抜粋
davfs2ファイルシステムをアンマウントして、後で再度マウントすると、サーバーからの時間情報に従ってファイル時間が変更された可能性があります。cp -puやrsyncなどのツールは、これらの時間に依存して、変更されたファイルを判別できません。
したがって、変更時間に関するさまざまな問題を考慮すると、純粋にチェックサムを使用するアプローチの方が適しているように見えます。
$ rsync -avvz --omit-dir-times --checksum --human-readable --progress <local dir> <remote dir>
--max-size=250M --exclude '.*'
。私はcp
これを行うことができると確信しています...おそらくfindの出力をcpにパイプすることによって?しかし、それを行う方法はまだわかりません。私たちが解決策を思いついたら、私はやってみcp -ru
ます。ありがとう