rsync -rlptD
他のユーザーのディレクトリをコピーするために使用します。コピー権限を持たない一部のファイル(事前に不明)があります。 rsyncにこれを無視させる方法はありますか?問題は、rsyncがゼロ以外の値を返すと、bash -xスクリプトが終了することです。
ベストアンサー1
Rsyncにはこのオプションはありません。 2つの解決策があります。 1つは、rsyncエラーメッセージを解析することです。これは非常に強力ではありません。もう1つは、フィルタリングするための読み取れないファイルのリストを生成することです。
cd /source/directory
exclude_file=$(mktemp)
find . ! -readable -o -type d ! -executable |
sed -e 's:^\./:/:' -e 's:[?*\\[]:\\1:g' >>"$exclude_file"
rsync -rlptD --exclude-from="$exclude_file" . /target/directory
rm "$exclude_file"
find
ない場合は、適切なディレクティブに置き換え-readable
てください。-executable
-perm
これは、名前に改行文字を含む読み取れないファイルがないと仮定します。これらの問題を処理する必要がある場合は、次のように区切られた空のファイルのリストを作成し、オプションを次のよう-0
に渡す必要がありますrsync
。
find . \( ! -readable -o -type d ! -executable \) -print0 |
perl -0000 -pe 's:\A\./:/:' -e 's:[?*\\[]:$1:g' >>"$exclude_file"