【发布时间】:2018-07-11 08:22:57
【问题描述】:
我在服务器上遇到问题,有时从服务器到远程主机的自动备份失败。
目前,这让我没有最近的备份,并且一堆 .tar.gz 文件占用了服务器上的大量空间。
当它发生时,我目前纠正这个问题的过程是手动将这些文件放入并命令行 FTP 这些文件。这既费时又乏味。
我想编写一个 .sh 脚本,我可以上传到文件夹并告诉服务器放置文件夹中的每个 .tar.gz 文件。我无法将文件夹作为一个整体传输,而只是传输其中的每个文件,因为某些文件已经正确传输,等等。
我找到了this question 显示了一个适用于这个问题提问者的脚本,但我需要调整这个脚本的部分内容,我不知道(我不够自信)使用 .sh 指令来执行此操作,并且也警惕搞砸任何服务器端。
#!/bin/sh
USERNAME="user"
PASSWORD="pass"
SERVER="123.456.78.90"
DATE="`date +%Y-%m-%d`"
BACKUPDIR="/${DATE}/accounts/"
find . -type f -name "*.tar.gz" -exec basename {} .tar.gz \; |
while read filename ; do
/bin/ftp -inv $SERVER >> /tmp/ftp_backup.log <<EOF
user $USERNAME $PASSWORD
cd $BACKUPDIR
binary
put $filename
EOF
echo "$date copied $filename" >> /tmp/ftp_backup.log
done
我的目的是制作这个脚本,我可以将它上传到有问题的服务器文件夹中,然后在文件夹中运行脚本(在chmoding 之后)以移动 .tar.gz 文件 - 一次一个- FTP 到备份目录 (/<date>/accounts/) 并在它们全部移动后完成。
(然后我会删除服务器端的.tar.gz 文件和上面的.sh 脚本。)
大约有 60 个文件,最大 15Gb。文件名不包含空格。
文件路径结构:
服务端:
/backupsfolder/2018-07-11/filename1.tar.gz
/backupsfolder/2018-07-11/filename2.tar.gz
/backupsfolder/2018-07-11/backupscript.sh //我上面的脚本
/backupsfolder/2018-07-11/master.meta //其他文件
FTP 端:
/2018-07-11/accounts/filename1.tar.gz
我需要对上述脚本进行哪些调整才能做到这一点?
【问题讨论】: