私のAndroidデバイスにルートLinuxシェルが開いていて、cp
それを使用してディレクトリをコピーするとエラーが発生します。私はエラーがどこから来るのかを知っていると思うので、それは私の問題ではありません。
エラーが発生したときに終了するのではなく、そのディレクトリのすべての内容をコピーできるコマンドを探したいと思います。今起こっていることの例は次のとおりです。
root@flo:/ # cp -r -v /d/* /sdcard/test/
cp '/d/TRRS'
cp: xread: Invalid argument
1|root@flo:/ #
私は何をすべきですか?
ベストアンサー1
あるディレクトリから別のディレクトリにファイルをコピーし、同様の問題が発生しました。エラーが発生した場合。アイデアは、一つの助けを借りてできるだけ多くを複製することです。オペレーティングシステム(私の場合ダーバン)ツールを使用し、可能なエラーを手動で処理します。
私が使うものはヒント ジュリー・ペレティエ彼女は提供したコメント到着使用rsync
。私も使ったこの回答失敗したコピー操作を分析できるようにしたいので、テンプレートとして使用します。
要約すると、あなたのケースの解決策は次のとおりです。
rsync --archive --itemize-changes --delete /d/ /sdcard/test/
説明:rsync
ソースパス()の内容を/d/
ターゲットパス(/sdcard/test/
)にコピーします。コンテンツがターゲットディレクトリにすでに存在する場合は、差分のみが記録されます(増分転送)。これにより、いつでもプロセスを中断して続行できます。失敗を報告するノンストップ完全なコピー操作。rsync
デフォルトでは、「クイックチェック」はファイルサイズと最後の修正時間のみを使用して行われます。追加の基準を設定できます(下記参照)。
--archive
違いを確認するために、ファイルとディレクトリのプロパティのセットを指定します。--itemize-changes
各ファイルの要約を印刷するように指示します。これは、ファイルが異なると見なされる理由を理解するのに非常に役立ちますrsync
。これはコピー操作の失敗を理解するのに役立ちました。メッセージはやや秘密です。よりよく理解するには、マニュアルページをご覧ください。--delete
ソース・ロケーションに存在しないファイルをターゲット・ロケーションから除去することを指定します。
私の場合、あるファイルシステムから別のファイルシステムにコピーするときに変更された比較基準セットを使用しました。たぶんこれはあなたの場合でも役に立ちます:
rsync --recursive --links --safe-links --times --group --owner --devices --specials --delete --human-readable --stats --verbose --itemize-changes --progress --modify-window=3 source/ target/
最も重要な変更は次のとおりです。
--safe-links
コピーツリーからシンボリックリンクのみをコピーするには- いいえ
--perms
(暗黙的--archive
)ターゲットファイルシステムの権限が正しく設定されていないためです。 --modify-window=NUM
ターゲットファイルシステムの設定が正しくないため、最終修正時刻の許容誤差を設定