我想做一个备份脚本,这使得我定义的文件夹.tar.gz ,说fx /root/tekkit/world
然后,这个.tar.gz文件应该被上传到一个FTP服务器,以上传的时间命名,例如: 07-10-2012-13-00.tar.gz
如何编写这样的备份脚本?
我已经想出了.tar.gz部分 – 只需要命名和上传到FTP。
我知道FTP并不是最安全的方法,但是由于它是非敏感数据,FTP是我唯一的select,所以它会这样做。
我结束了这个脚本:
#!/bin/bash # have some path predefined for backup unless one is provided as first argument BACKUP_DIR="/root/tekkit/world/" TMP_DIR="/tmp/tekkitbackup/" FINISH_DIR="/tmp/tekkitfinished/" # construct name for our archive TIME=$(date +%d-%m-%Y-%H-%M) if [ $1 ]; then BACKUP_DIR="$1" fi echo "Backing up dir ... $BACKUP_DIR" mkdir $TMP_DIR cp -R $BACKUP_DIR $TMP_DIR cd $FINISH_DIR tar czvfp tekkit-$TIME.tar.gz -C $TMP_DIR . # create upload script for lftp cat <<EOF> lftp.upload.script open server user user password lcd $FINISH_DIR mput tekkit-$TIME.tar.gz exit EOF # start backup using lftp and script we created; if all went well print simple message and clean up lftp -f lftp.upload.script && ( echo Upload successfull ; rm lftp.upload.script )
首先创build一个cron作业,在你想创build备份的时候创build备份,脚本会生成lftp脚本通过FTP上传文件。
#!/bin/bash # have some path predefined for backup unless one is provided as first argument BACKUP_DIR="/tmp/test" # construct name for our archive TIME=$(date +%d-%m-%Y-%H-%M) if [ $1 ]; then BACKUP_DIR="$1" fi echo "Backing up dir ... $BACKUP_DIR" tar czvfp $TIME.tar.gz $BACKUP_DIR # create upload script for lftp cat <<EOF> lftp.upload.script open ftp.server.tld user username password cd /target/directory lcd /local/dir/where/tar/gz/archive/is mput $TIME.tar.gz exit EOF # start backup using lftp and script we created; if all went well print simple message and clean up lftp -f lftp.upload.script && ( echo Upload successfull ; rm lftp.upload.script )
简单如下:
DATE=`date +%d-%m-%Y-%H-%M` tar cfz ${DATE}.tar.gz /root/tekkit/world
或者,用更less的打字:
tar cfz $(date +%d-%m-%Y-%H-%M).tar.gz /root/tekkit/world
怎么了?
$ DATE=`date +%d-%m-%Y-%H-%M` $ echo $DATE 07-10-2012-13-15