我想要使用它rsync
来备份我的网络服务器的数据库。
我在网络服务器上创建了一个 cronjob,它mysqldump
每天晚上都会创建一个数据库,并在开始时用当前日期命名它。超过 30 天的文件将被删除。
现在我只想通过 cronjob 将当前日期的数据库文件备份到我的 NAS。
我怎样才能只包含这一个文件?或者反过来,我怎样才能排除除这一个文件之外的所有内容?
我的代码rsync
如下:
rsync -avz -h -c --include="*$(date +%Y-%m-%d)*" -e "ssh -p $PORT" $USER@$SERVER:$SQL_SOURCE $SQL_TARGET --delete
网络服务器上今天的文件名将是,2021-06-30_databasename.sql
但其他所有文件也2021-06-29_databasename.sql
都会同步。
答案1
而不是同步小路(然后定义文件名包含/排除模式)只需将 rsync 指向您要复制的单个文件名...
filename=$(date +%Y-%m-%d_databasename.sql)
rsync host:/path/to/file/$filename /dest/
请注意,这不会清理任何旧文件/dest/
,一年后那里将有 366 个文件