bash - 通过 Cron 作业上传当天的备份而不是所有文件

标签 bash cron ftp centos backup

我有一个在 Centos 7 上运行的 VPS,并创建了一个 cron 作业来转储我的数据库(Sql 8.0)并创建一个 tar备份我整个网站的文件,这每天都在进行
我想创建另一个 bash/cron 作业来连接到我的备份服务器并上传存储在我的 VPS 上的那些备份文件。
问题是,我不能让它只上传最新的文件,而不是整个文件,因为每周会有 7 次备份。
我希望它只上传今天的文件,而不是所有可用的文件。
我应该使用 rsync ?
到目前为止,这是我的 bash:

#!/bin/sh
USERNAME="ftp user"
PASSWORD="ftp password"
SERVER="IP or domain"
 
# local directory to pickup *.tar.gz file
FILE="/path/"
 
# remote server directory to upload backup
BACKUPDIR="/pro/backup/sql"
 
# login to remote server
ftp -n -i $SERVER <<EOF
user $USERNAME $PASSWORD
cd $BACKUPDIR
mput $FILE/*.tar.gz
quit
EOF

最佳答案

您可以将 find 与 -ctime 一起使用搜索 .tar.gz文件在过去 7 天内更改,然后循环查看结果,对每个文件进行 ftping。将此逻辑与您现有的解决方案一起使用:

#!/bin/sh
USERNAME="ftp user"
PASSWORD="ftp password"
SERVER="IP or domain"

# local directory to pickup *.tar.gz file
FILE="/path/"

# remote server directory to upload backup
BACKUPDIR="/pro/backup/sql"

while read fil;
do 
  # login to remote server
  ftp -n -i $SERVER <<EOF
  user $USERNAME $PASSWORD
  cd $BACKUPDIR
  mput "$FILE/$fil"
  quit
  EOF
done < "$(find $FILE -ctime -7 -name "*.tar.gz")"

关于bash - 通过 Cron 作业上传当天的备份而不是所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66409474/

相关文章:

php - cron 作业被触发而不是在特定时间并且不重复

linux - 如何将cron日志和脚本输出同时输出到同一个文件?

azure - curl azure网站ftps连接被拒绝端口990

PHP - FTP 文件名编码问题

linux - 在 Expect 脚本中运行 Rsync 命令

regex - 根据文件名中的时间戳值复制文件

linux - 保存在变量中时,字符串中的制表符消失

linux - GNU Bash 3.2.25(1) 多个转义字符显示目录列表

php - 如何确定 cronjob 中的环境

java - java ftpclient 需要什么权限?