我将使用 rsync 将旧主文件夹同步到备份驱动器上。我正在考虑使用 rsync 作为 root。有没有办法避免更改我复制的文件等的所有权?
答案1
您可以使用-o
和-g
选项。从说明书rsync
( man rsync
):
-o
,--owner
保留所有者(仅限超级用户)
-g
,--group
保留组
更进一步,常用的选项rsync
是-a
/--archive
选项。该选项意味着-rlptgoD
,即以下选项:
-r
,--recursive
递归到目录
-l
,--links
将符号链接复制为符号链接
-p
,--perms
保留权限
-t
,--times
保留修改时间
-D
--devices --specials
与(保留设备文件、保留特殊文件) 相同
答案2
我使用以下命令行来保留“所有内容”、文件内容、文件的所有权和权限、目录、符号链接等。这样我就能够将系统复制到新驱动器并使其在另一台计算机上运行。好吧,我也必须修复引导加载程序,但它可以很好地复制文件内容、所有权和权限。
- 请注意源目录中的尾部斜杠,并在 中阅读相关内容
man rsync
。
rsync -avz foo:src/bar/ /data/tmp A trailing slash on the source changes this behavior to avoid creating an additional directory level at the destination. You can think of a trailing / on a source as meaning "copy the contents of this directory" as opposed to "copy the directory by name", but in both cases the attributes of the containing directory are transferred to the contain‐ ing directory on the destination. In other words, each of the follow‐ ing commands copies the files in the same way, including their setting of the attributes of /dest/foo: rsync -av /src/foo /dest rsync -av /src/foo/ /dest/foo Note also that host and module references don’t require a trailing slash to copy the contents of the default directory. For example, both of these copy the remote directory’s contents into "/dest": rsync -av host: /dest rsync -av host::module /dest You can also use rsync in local-only mode, where both the source and destination don’t have a ’:’ in the name. In this case it behaves like an improved copy command.
-n
,从“试运行”开始,检查一切看起来是否正确。sudo rsync -Havn source/ target
删除选项 (
-n
) 并让它rsync
完成它的工作。sudo rsync -Hav source/ target
它将检查目标中的每个目录/文件是否存在并且是最新的,并且仅复制需要更新的内容(在备份场景中)。
-H
跟踪硬链接(这节省了驱动器空间),但使复制过程变慢(它不包含在其中的原因-a
-a
是用于备份目的的标准归档选项,它保留文件系统中文件的“所有内容”(硬链接除外)。-v
是经典的详细选项,它打印要复制的所有文件。还有其他您可能更喜欢的选项来监控进度。您可能更喜欢关闭冗长的内容,但在早期阶段检查事情是否按预期进行是有好处的。
答案3
我用
sudo rsync -HavE /SOURCE /DEST
因为我的备份中有可执行的 bash .sh 脚本。
首字母缩略词 `-HavE 有助于记住“HavEverything”
该缩写词-HavEn
有助于安全地记住“HavEverything”
-E, --executability 保留可执行性
感谢您的回答@sudodus
凯文