因此,我打算通过将主文件夹复制到外部驱动器来备份它,如下所示:
sudo cp -r /home/my_home /media/backup/my_home
结果是外部驱动器上的所有文件夹现在都归root:root
.如何才能cp
保留原来的所有权和权限?
答案1
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
答案2
您也可以使用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
请注意尾部斜杠(有关详细信息,请参阅联机帮助页)。
答案3
cp -a
Where-a
的缩写--archive
— 基本上它按原样复制目录;文件保留其所有属性,并且符号链接不会取消引用 ( -d
)。
从man cp
:
-a, --archive
same as -dR --preserve=all
答案4
你可以这样做:
tar cf - my_home | (cd /media/backup; sudo tar xf - )
tar
保持权限、所有权和目录结构完整,但将所有内容转换为字节流。您运行一个更改目录的“子shell”(括号内的命令),然后tar
反转转换。一串字节成为具有正确所有权和权限的目录和文件。