如何使用正确的权限从 rsnapshot 备份恢复文件

如何使用正确的权限从 rsnapshot 备份恢复文件

我已经安装了新版本的 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

相关内容