Вопрос:
Я пишу небольшой сценарий резервного копирования для моего сервера Ubuntu. Файлы tar’ed и zip локально во временную папку, загруженные на ftp-сервер через lftp и, наконец, удаленные локально.
Сохранение файлов на сервер:
FTPSUBDIR=’date —utc +»%Y-%m-%d»‘ echo «mkdir -p /daily/${FTPSUBDIR}; mirror —reverse ${TEMPDIR} /daily/${FTPSUBDIR};» | /usr/bin/lftp -u «$FTPUSER,$FTPPASS» «$FTPSERV»
Структура папок на ftp-сервере:
/ daily 2011-10-25 2011-10-24 2011-10-23 weekly 2011-10-23 2011-10-16 2011-10-09
Как сохранить только самые новые резервные копии x (5 для ежедневных, 4 для еженедельных) и удалить другие папки на ftp-сервере?
Лучший ответ:
С помощью всего лишь ftp-операций в удаленной системе вам нужно будет проявлять большую активность на стороне клиента ftp.
Отладочные фрагменты кода следуют… вам нужно будет отлаживать и отлаживать.
# print results of directory list to standard out ftp_dir () { typeset dir=»$1″; ftp <<‘FTP’ login connection and cd directory commands FTP } # read delete commands (or others) from stdin using inline login ftp_delete() { cat <<FTP — | ftp send FTP login and delete commands FTP } do_delete () { typeset dir=»$1″; typeset cnt=»$2″; if [ ${#names} -gt $cnt ]; then typeset a_end=$(( ${#names} — 8 )); ( typeset n=0; while [ $n -lt a_end ]; do echo «delete $dir/${names[$n]}»; n=$(( $n + 1 )); done; ) | ftp_delete fi } names=( $( ftp_dir weekly | sort ) ); #get all entries do_delete dir 4
Если бы я проснулся, я мог бы найти лучший ответ.
Ответ №1
Это самый простой способ удалить старые резервные копии:
HOST=’ftpback.net’ USER=’username’ PASSWD=’pass’ FILE=»file.tar.gz» DELPREFIX=$( date -d ‘now -2 month’ +’%y-%m’ ) ftp -n $HOST <<END_SCRIPT quote USER $USER quote PASS $PASSWD cd mysql put $FILE mdel «$DELPREFIX*» y quit END_SCRIPT exit 0
DELPREFIX в этом случае равен месяцу до последнего, поэтому, если он ноябрь, дата будет сентябрь, например, ’15 -09 ‘.
Когда в FTP, он удалит все файлы, начинающиеся с DELPREFIX, например ’15 -09 ‘. Это не дает вам возможности удалять файлы в день, но если вы счастливы иметь переменные объемы резервных копий, это проще, чем другие решения для создания сценариев.
Возможно, вам придется немного подкорректировать эти имена файлов.