我已经安装了新版本的 Debian。我想home
用我的备份版本恢复一些文件以及etc
.备份是使用 rsnapshot 创建的。
我不太清楚的是我应该由哪个用户运行恢复命令。让我举个例子。假设我想恢复我的rsnapshot
文件/etc/cron.d/
。默认情况下,我在新安装的版本中看到以下权限:
station:~$ ls -l /etc/cron.d/rsnapshot
-rw-r--r-- 1 root root 472 Mar 26 2016 /etc/cron.d/rsnapshot
在这种情况下,我需要以 root 或 sudo 身份运行 rsync 命令,即我正在做测试:
@thinkstation:~$ rsync /media/3985DAA24356D774/rsnapshot/station/daily.0/etc/etc/cron.d/rsnapshot /etc/cron.d/rTest
但这会导致以下权限:
station:~$ ls -l /etc/cron.d/rTest
-rwxr-xr-x 1 root root 513 Sep 24 19:01 /etc/cron.d/rTest
这与系统默认的不匹配。
另一个例子,更令人沮丧。我以普通用户身份运行 rsync 命令(非 root,非 sudo)。我恢复的文件是一个通过 git 进行版本控制的项目。我进行了恢复,因为并非所有文件都在 github 上。恢复后,由于权限更改,我看到了很多差异(我不明白,因为文件不涉及任何 sudo 权限并被转移到我的home
目录)。所以我不确定我过去在备份时是否犯了错误,或者我在恢复文件时是否犯了错误。无论如何,我想知道如何解决该问题。
答案1
你需要告诉同步您想要恢复权限。据此,man 1 rsync
我建议使用以下选项来恢复单个文件:
-p, --perms preserve permissions
-t, --times preserve modification times
-o, --owner preserve owner (super-user only)
-g, --group preserve group
通常建议-a
从基于 rsync 的备份恢复内容,其中包括单个文件不需要的更多选项。所以你的命令将如下所示:
rsync -ptog /media/3985DAA24356D774/rsnapshot/station/daily.0/etc/etc/cron.d/rsnapshot /etc/cron.d/rTest
或者使用长选项:
rsync --perms --times --owner --group /media/3985DAA24356D774/rsnapshot/station/daily.0/etc/etc/cron.d/rsnapshot /etc/cron.d/rTest
因为您指定了--owner
,--group
这应该适用于您的两个用例。
如果您想递归地恢复目录,而不仅仅是恢复单个文件,您可能会发现此-a
选项很有用,也许与 结合使用-v
,它会告诉您复制了什么:
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
-v, --verbose increase verbosity