rsync mkstempがBox.com cloud davfsが無効なパラメータをマウントできませんでした。 (22)

rsync mkstempがBox.com cloud davfsが無効なパラメータをマウントできませんでした。 (22)

以下のように、davfsを使用してBox.comクラウドストレージをインストールしました。このガイドライン。 Box.comアカウントを/home/me/Cloud/Boxにインストールしました。

マウントされたファイルシステムは、端末だけでなくDolphin経由でもアクセスできます。少し遅いですが、ディレクトリ構造全体をエラーなしで一覧表示(ls)してナビゲートできます。

次に、次のようにrsyncを実行してみました。

rsync -auvz  --max-size=250M --exclude '.*' /home/me/Music/ /home/me/Cloud/Box/Music

私も次のことを試しました。

rsync -auv  /home/me/Music/A /home/me/Cloud/Box/Music

とrsyncコマンドの他のバリエーション。このコマンドは、davfsマウントを介してローカルファイルシステム(/home/me/Music/)からBoxクラウド(/home/me/Cloud/Box/Music)にマイ音楽をコピーします。

私はいつも次のようなエラーがたくさんあります。

rsync: mkstemp <filename> failed: Invalid argument (22)

具体的な例は次のとおりです。

rsync: mkstemp "/home/me/Cloud/Box/Music/VariousArtists/.01_Track_1.mp3.YVmFI9" failed: Invalid argument (22)

これは、高速で信頼性の高いケーブルモデム接続(12 Mb / sのアップロード速度)を備えたKubuntu 12.04 LTS 64ビットサーバークラスのハードウェアで発生します。

答え1

1.ファイル名特殊文字の問題

ファイル名に特殊文字がありますか?.たとえば、これらのファイルを作成するファイルシステムによっては、ファイルの前にドット()を付けることができない場合があります。

2. rsync修正時間とwebdav2関連の問題

私はこれに会ったブログ投稿説明されている問題は、rsyncwebdav2インストールの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/

これは使いやすい方法rsyncですが、今ではチェックサムではなくサイズに基づいてファイルを比較します。

3. davfs2(WebDAV)に関する問題

私は次のタイトルでこれを見つけました:davfs2を介してrsync?SourceforgeのWebDAV(davfs)フォーラムにあります。誰かがWebDAVを使用してオンラインストレージプロバイダをマウントし、WebDAVを介してマウントされたストレージでrsyncを実行したいのと同じような状況について尋ねました。これはその一つです。WebDAV開発者(Werner Baumann)はこのトピックについて話します。

Wernerの答えから抜粋

  • davfs2は完全なファイルのみをアップロードします。 rsyncが通常行う増分操作を実行できないため、rsyncは非常に効率的です。

  • davfs2 はディスクのローカルキャッシュを使用します。これにより反応性が向上し、アプリケーションが利点を享受できます。ただし、ローカルディスク容量が必要です。 rsyncがローカルキャッシュを使用してほとんどの操作を実行できるように、大きなキャッシュサイズを許可する必要があり、davfs2はrsyncの完了中にバックグラウンドでほとんどのファイルをアップロードします。

Wernerは引き続き次のことを提案しました。

この場合、欠点になる可能性があります。 rsyncがリモートホストからファイルを読み取るときにそのファイルがまだ存在しない場合は、まずdavfs2を介してローカルキャッシュに転送する必要があります。これにより、プロセスが不必要に遅くなる可能性があります。あなたの場合、rsyncは複雑なコピープログラムとしてのみ使用されるため、代わりにcpを使用することをお勧めします。 cpには、davfs2ファイルシステム(=smartdrive)のファイルよりも最新のファイルのみをコピーするオプション(-u)があり、ファイルを読み取る必要はなく、ファイルメタデータ(mtimeなど)のみが必要です。

"cp -pruディレクトリ/to/backup dav/"などのコマンドがこれを実行できます。ファイルをダウンロードしないでください(rsyncのようにダウンロードすることはできますがわかりません)(cpとrsyncのマニュアルを確認してください)。

オプション?

したがって、@Anthonが提案したように、そのcp -u方法を使用してファイルをコピーできます。この方法は比較要素としてファイルサイズのみを使用するため、完全に信頼できません。

ファイルを比較するときに修正時間だけを見ることは使用しないでくださいcp -pruWernerはこの記事でその理由を説明しています。:

モードタイミング問題の抜粋

davfs2ファイルシステムをアンマウントしてから後で再マウントすると、サーバーの時間情報によってファイルの時間が変わる可能性があります。 cp -puやrsyncなどのツールは、この時間に依存してどのファイルが変更されたかを判断できません。

したがって、修正時間に関連するさまざまな問題を考慮すると、純粋なチェックサムアプローチがより適切に見えます。

$ rsync -avvz --omit-dir-times --checksum --human-readable --progress <local dir> <remote dir>

答え2

この問題は、rsyncbox.comおよび/またはdavfsで認識されないファイル名で一時ファイルが生成されたために発生します。したがって、そのファイルは.01_Track_1.mp3.YVmFI9システムには存在しませんが、一時ファイルです。人工生産rsync。私の考えでは:すべてのファイルでエラーが発生しない場合、アップロードされた(および変更された)ファイルでのみエラーが発生する可能性があります。

それかつては不可能でした。この一時ファイルの作成を解除しましたが、オプションを追加すると、より良い運が享受できます--inplace。ただし、rsyncデーモンと通信しないと(davfsを使用していない場合)、rsyncを使用する利点は明確ではありません。

したがって、代わりに試してみることができますcp --update。ソースが次の場合にのみファイルをコピーします。最新宛先より新しいファイルと ID3 タグが変更されたファイルはコピーされますが、他のファイルはコピーされません。

または、より多くの制御が必要な場合は、以下を使用してくださいfind

cd /home/me/Music/
find * -size -250M -print0 | cpio -pdmv0 /home/me/Cloud/Box/Music

これにより、階層が維持され、古いcpioファイルを上書きしないようになります。

答え3

このエラーを停止するには、Invalid argument (22)rsyncがdavfsターゲットに一時ファイルを作成するのを停止する必要がありました。

rsync --temp-dir=/tmp

私の考えで何が起こっているかは、rsyncの一時ファイル名がthatで始まり、.davfsがそれを許可しないことです。だから私はさらに一歩進んでrsyncに..を使用しているので、davfsターゲットからディレクトリを--delete削除しないように指示しました。lost+found

rsync --temp-dir=/tmp --exclude lost+found --exclude '.*'

関連情報