したがって、次のようにして、ホームフォルダーを外部ドライブにコピーしてバックアップします。
Sudo cp -r /home/my_home /media/backup/my_home
その結果、外付けドライブ上のすべてのフォルダーがroot:root
。どうすれば元の所有権と権限をcp
に保持できますか?
Sudo cp -rp /home/my_home /media/backup/my_home
Cpマンページから:
-p same as --preserve=mode,ownership,timestamps
--preserve[=ATTR_LIST]
preserve the specified attributes (default: mode,ownership,timestamps),
if possible additional attributes: context, links, xattr, all
rsync
を使用することもできます。
Sudo rsync -a /home/my_home/ /media/backup/my_home/
rsync
マンページから:
-a, --archive
This is equivalent to -rlptgoD. It is a quick way of saying you want
recursion and want to preserve almost everything (with -H being a notable
omission). The only exception to the above equivalence is when
--files-from is specified, in which case -r is not implied.
Note that -a does not preserve hardlinks, because finding multiply-linked
files is expensive. You must separately specify -H.
cp
とrsync
の比較については、この質問を参照してください: https://stackoverflow.com/q/6339287/406686
末尾のスラッシュに注意してください(詳細はマンページを参照してください)。
cp -a
-a
は--archive
の省略形です。基本的にはディレクトリをそのままコピーします。ファイルはすべての属性を保持し、シンボリックリンクは逆参照されません(-d
)。
man cp
から:
-a, --archive
same as -dR --preserve=all
私が使う cp -pdRx
は-p
保存モード、所有権とタイムスタンプ、-d
リンクを保持します(ファイルの内容をコピーする代わりにシンボリックリンクを取得します)、-R
再帰的に実行し、-x
1つのファイルシステムにとどまる(コピーする場合にのみ非常に役立ちます/
またはアクティブなマウントポイントを持つ何か)。
PS:-R
の代わりに -r
はls -lR
。
cp
には、ファイルの所有権を保持するオプションがあります。 cp
のマニュアルページから:
-p Cause cp to preserve the following attributes of each source file in the copy: modification
time, access time, file flags, file mode, user ID, and group ID, as allowed by permissions.
Access Control Lists (ACLs) and Extended Attributes (EAs), including resource forks, will also
be preserved.
あなたはこのようなことをすることができます:
tar cf - my_home | (cd /media/backup; Sudo tar xf - )
tar
は、権限、所有権、およびディレクトリ構造をそのまま維持しますが、すべてをバイトのストリームに変換します。ディレクトリを変更する「サブシェル」(括弧で囲まれたコマンド)を実行し、tar
を取得して変換を逆にします。バイトのSteamは、正しい所有権と権限を持つディレクトリとファイルになります。
答えは簡単です:cp
には-p
許可を保持するオプション(ここに魚があります)。
しかし、Wojtekがコメントで述べているように、man cp
(細かいマニュアルを読む)が良い出発点になります(釣り方を学びたいですか?)。
preserve = allを使用すると、コピーはファイルの所有者、グループ、タイムスタンプなどのすべての属性を保持します。したがって、次のコマンドを使用して安全にバックアップを実行してください。
cp -r --preserve=all /home/my_home /media/backup/my_home