Rsyncは-aと--numeric-idsを使用してもUID / GIDを保持しません。

Rsyncは-aと--numeric-idsを使用してもUID / GIDを保持しません。

これを使用してリモートファイルをバックアップしようとしていますが、リモートrsyncシステムのUID / GIDはローカルシステムとは異なります。私が何を試しても、私のローカルファイルはすべて「opux / opux」で、対応する* IDは1000です。これは私のrsyncです。

sync -e "ssh" --rsync-path="sudo rsync" -AXSHavz --progress --numeric-ids pi@rpinfs:/mnt/mainhdd/dospace/ --exclude 'videos' ~/backups/dospace/

私はこれを試しましたが、最初のものは「作業が許可されていません」と--superマーク--fake-superし、2番目は何もしないようです。私は何をすべきですか?

すべてのメタデータを維持しながらバックアップを実行する1つの方法はtarを使用することですが、リモートバックアップでは正しく機能しないことがわかります。私は実行するのが簡単で、理想的にはローカルシステムでrootとして実行する必要がないことを望みました。

リモートシステムはRaspbianを実行しているRaspberry Piなので、ログインしたユーザーはrootだけです。私のローカルシステムはUbuntu 16.04 AMD64です。

答え1

リモートからデータを転送する場合は、リモートである必要はありませんroot(SSHユーザーに影響を受けるすべてのファイルに対する読み取り(ディレクトリ:実行)権限がない場合を除く)。

ただし、rsyncにファイルの所有者(およびグループ)をローカルに変更させるには、正常に実行する必要がありますroot。例外:すべてのファイルとディレクトリが同じユーザー(通常はローカルでrsyncを実行しているユーザーではない)に属している場合は、そのユーザーとしてrsyncを実行できます。

rsync別の解決策は、ファイルメタデータにまったく気にせずに別々に処理することです。

getfacl --recursive /mnt/mainhdd/dospace

ただし、一部のジョブはローカルで実行する必要がありますroot。走ることが走るsetfaclよりも良いかどうかは興味深い質問です…rootrsyncroot

関連情報