このrsync呼び出しを使用して、ホームディレクトリをバックアップします。
rsync -aARrx --info= --force --delete --info=progress2 -F "$USER_HOME" "$BACKUP_MNTPOINT"
rsyncのマニュアルページには、-aが-gおよび-o(他のスイッチの中でも特に)を意味し、所有権が保持されると記載されています。ただし、$BACKUP_MNTPOINT/$USER_HOME
の下にディレクトリが存在しない場合は、正しいディレクトリではなくroot:rootの所有権でディレクトリが作成されることに気付きました。 (これは$BACKUP_MNTPOINT/$USER_HOME
の直下のディレクトリでのみ発生します)。何故ですか?
$BACKUP_MNTPOINT
は、ローカルにマウントされたドライブです。 $BACKUP_MNTPOINT/$USER_HOME
には適切な所有権と権限があります。 $USER_HOME
も$BACKUP_MNTPOINT
もスラッシュで終わっていません。
ソースとターゲットの両方のファイルシステムはXFSであり、mkdir $BACKUP_MNTPOINT/$USER_HOME
を実行すると、予想される所有権を持つディレクトリが作成されます。
rsync
を使用してシステムをサーバーにバックアップするときに、同様の問題が発生しました。私が使用した:
rsync -aAXSHPr \
-e ssh \
--rsync-path="Sudo /usr/bin/rsync/" \
--numeric-ids \
--delete \
--progress \
--exclude-from="/path/to/file/that/lists/excluded/folders.txt" \
--include-from="/path/to/file/that/lists/included/folders.txt" \
/ USER@SERVER:/path/to/folder/where/backup/should/go/
解決策は、実際には問題がないということです。 rsync
プロセスが誤った権限セットでフォルダを作成するのを確認したら、プロセスを中止したと思います。重要なのは、rsync
が親フォルダーのアクセス許可を設定するのは、そのすべてのサブフォルダーとそのファイルの同期が完了した後のみです。
おそらく、strace/trussを介してrsyncを実行し、chown()syscallからエラーが返されるかどうかを確認します。また、chown()に正しいパスとUID/GIDがあることを確認します。