rsyncコマンドで『some files/attrs were not transferred』でたまにファイルがコピーされないエラーに対処する
rsyncのコマンドオプションを最適化する
$ rsync -av --delete hoge/ ./
#ファイル書き込み時にエラー発生!
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.0]
...
基本的なrsyncのコマンドオプション
オプション | 意味 |
---|---|
-a, --archive | アーカイブモード(-rlptgoD と同じ) |
-r, --recursive | ディレクトリ階層以下をすべて対象とする |
-l, --links | シンボリックリンクをそのまま維持してコピー |
-p, --perms | ファイル・フォルダのパーミッションを維持してコピー |
-t, --times | タイムスタンプを維持してコピー |
-O, --omit-dir-times | --timesオプションでディレクトリは対象外にする |
-g, --group | ファイル・フォルダのグループ情報を維持してコピー |
-o, --owner | ファイル所有者情報を維持してコピー(rootのみ有効) |
--devices | ブロックデバイスをコピー(rootのみ有効) |
--specials | 特殊ファイル(名前付きパイプやFIFO)をコピー |
-D | デバイスの再作成(--devices --specials と同じ) |
-H, --hard-links | ハードリンクをそのまま反映 |
-h, --human-readable | ファイルサイズのbytesをKやMで出力 |
-v, --verbose | コピーしたファイル名やバイト数などの転送情報を出力 |
-z, --compress | データ転送時に圧縮 |
--compress-level=NUM | NUMがゼロでない場合 --compress オプションが暗黙的に指定される |
-c, -checksum | タイムスタンプとファイルサイズではなくチェックサムで差分を確認 |
-u, --update | 転送先に既にファイルが存在し、転送先のタイムスタンプの方が新しい場合は転送しない |
-n, --dry-run | コピーや転送を実際には行わず転送内容のみ出力 |
--delete | 転送元に存在しないファイルは削除 |
--exclude=PATTERN | 同期から除外 |
rsyncコマンドの書き込み特化版オプションの一例
-pオプション(パーミッション維持)を外す
-gオプション(グループ情報維持)を外す
-oオプション(オーナー情報維持)を外す
-Dオプション(デバイス再作成)を外す
-Oオプション(ディレクトリのタイムスタンプを保持しない)を付ける
#rsync -av --delete hoge/ ./ を以下のコマンドオプションに置き換え
$ rsync -rlOtv --delete hoge/ ./
まとめ
ナンデモ系エンジニア
主にAngularでフロントエンド開発することが多いです。 開発環境はLinuxメインで進めているので、シェルコマンドも多用しております。 コツコツとプログラミングするのが好きな人間です。