将 Rsnapshot 与 sync_first、link_dest 和 use_lazy_deletes 结合使用

Dav*_*rer 6 linux backup rsnapshot

我已经使用下面的配置设置了 rsnapshot,它似乎工作正常。但是,如果我理解我正确阅读的内容,在 rsnapshot 文档和其他教程中,添加这些选项后操作会更加健壮:

link_dest 1
sync_first 1
use_lazy_deletes    1
Run Code Online (Sandbox Code Playgroud)

但是,当我启用这些功能时,尤其是 sync_first,它似乎无法正常运行。没有错误,但似乎没有发生任何事情(请参阅下面的最后一个代码块)。Configtest 成功。我怀疑我遗漏了一些关于如何使用 sync_first 的信息。我想首先知道这三个选项在一起使用时是否确实有益(没有冲突),其次,在启用 sync_first 后,我​​必须在 cron 中调用 rsnapshot 的方式有什么不同吗?

它安装在带有 rsnapshot 1.3.1 的 Ubuntu 14.04 上,并且 rsync 具有 link_dest 选项。感谢您对此的任何指示,官方文档有点枯燥。

会议

    config_version  1.2
    snapshot_root   /srv/rsnapshot/
    no_create_root  0
    cmd_cp      /bin/cp
    cmd_rm      /bin/rm
    cmd_rsync   /usr/bin/rsync
    cmd_ssh /usr/bin/ssh
    cmd_logger  /usr/bin/logger
    cmd_du      /usr/bin/du
    cmd_rsnapshot_diff  /usr/bin/rsnapshot-diff

    retain      HoursAgo    6
    retain      DaysAgo     7
    retain      WeeksAgo    4
    #retain monthly 3

    verbose     5
    loglevel    3
    logfile /var/log/rsnapshot.log
    lockfile    /var/run/rsnapshot.pid
    rsync_long_args --stats --delete --numeric-ids --relative --delete-excluded
    ssh_args    -p 22

    # host.mydomain.net
    backup      root@host.mydomain.net:/etc/        host.mydomain.net/
    backup      root@host.mydomain.net:/srv/www/        host.mydomain.net/
    backup_script       /usr/bin/ssh root@host.mydomain.net "rm -rf /var/local/mysqlbak/"       unused/
    backup_script       /usr/bin/ssh root@host.mydomain.net "/usr/local/bin/mysql_bak.sh"       unused1/
    backup      root@host.mydomain.net:/var/local/mysqlbak/     host.mydomain.net/mysql/
Run Code Online (Sandbox Code Playgroud)

定时任务

 0     */4    * * *    root    /usr/bin/rsnapshot hourly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Hourly Backup" myemail@domain.com
 30     3     * * *    root    /usr/bin/rsnapshot daily 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Daily Backup" myemail@domain.com
 0      3     * * 1    root    /usr/bin/rsnapshot weekly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Weekly Backup" myemail@domain.com
Run Code Online (Sandbox Code Playgroud)

启用所有三个额外选项的运行结果:

root@backup:~# rsnapshot HoursAgo
require Lchown
Lchown module loaded successfully
Setting locale to POSIX "C"
echo 3567 > /var/run/rsnapshot.pid
mv /srv/rsnapshot/HoursAgo.3/ /srv/rsnapshot/HoursAgo.4/
mv /srv/rsnapshot/HoursAgo.2/ /srv/rsnapshot/HoursAgo.3/
mv /srv/rsnapshot/HoursAgo.1/ /srv/rsnapshot/HoursAgo.2/
mv /srv/rsnapshot/HoursAgo.0/ /srv/rsnapshot/HoursAgo.1/
No directory to delete: /srv/rsnapshot/_delete.3567
rm -f /var/run/rsnapshot.pid
/usr/bin/logger -i -p user.info -t rsnapshot /usr/bin/rsnapshot HoursAgo: \
    completed successfully
Run Code Online (Sandbox Code Playgroud)

这会立即发生,没有与遥控器的连接,也没有时间检查更改的文件。

更新:我在 rsnapshot 的 Ubuntu 页面中找到了一些关于 sync_first 的附加信息。我通过在行rsnapshot sync &&前添加来编辑我的 cron hourly

 0 */4 * * * root /usr/bin/rsnapshot sync && /usr/bin/rsnapshot hourly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Hourly Backup" myemail@domain.com
Run Code Online (Sandbox Code Playgroud)

当我手动运行它时,这似乎有效。


我还想知道:这三个额外选项一起使用是否有利?

我也可能会转储统计信息,因此我只会在出现错误时收到一封电子邮件。

小智 3

rsnapshot sync打电话之前你必须先打电话rsnapshot <level>