Rsync 仅包含名称中具有特定字符串的文件

Rsync 仅包含名称中具有特定字符串的文件

我想要使​​用它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 个文件

相关内容