rsync
私のサーバーはコンテンツをバックアップしたいです。後でバックアップを使用してサーバーを復元できるように、所有者/グループを維持したいと思います。ただし、サーバーには自分のローカルコンピュータとは異なるユーザーとグループのセットがあるため、ローカルユーザーを使用することは意味がありません。rsync
また、セキュリティ上の理由からrootとして実行したくありません。どうすればいいですか?
答え1
各ファイルの権限、ユーザー、グループを保存するスクリプトを作成できます。
getfacl -R / > /tmp/permissions.txt
必要に応じて復元可能
setfacl --restore=permissions.txt
次に、 request.txt を含むすべてをバックアップホストの通常のユーザーアカウントに rsync します。
欠点は、Permissions.txtが実際のバックアップと100%同期しない可能性があることです。
通常のユーザーアカウントに不正な権限で秘密ファイルを保存すると、セキュリティ上の問題が発生する可能性があります。少なくともフルバックアップを含むディレクトリは、バックアップユーザーのみが読み取ることができる必要があります。
追加のセキュリティ注:元のホストのPermissions.txtも保護する必要があり、ルートのみを読み取ることができます。
答え2
ルートとして実行されないソリューションは提供できませんが、以下は提供できます。
まず、これを使用すると、--numeric-ids
UID / GIDが維持されます。回復のために、rsync
または(またはUID / GIDと混同されないすべてのもの)を使用してもtar
かまいません。
rsync -avP --numeric-ids
root
ただし、Unixではファイルを別のユーザーとして作成する必要があるため、rootとして実行しないと問題になります。 selinuxを使用すると、コマンドにすべてのファイルに対する書き込み権限を付与できますが、これは非常に複雑です(--fake-super
役に立ちますが)。
バックアップサーバーはルートを使用しますが、相手はルートを使用しない場合はセキュリティ要件を満たしますか?
# run this on the backup host:
rsync -avP --numeric-ids user@SOURCEHOST:/path/to/files/. /path/to/dest/.
root@BACKUPHOSTがuser@SOURCEHOSTでSSH経由で接続できる場合は問題ありません。まあ、ほとんどは良いです。ファイルにアクセスできない場合はuser
バックアップされません。状況によっては、これは問題にならない可能性があります。