После того как сгорел hosting.ua задумался над бекапами. решение нашлось быстро — воспользоваться програмулиной lftp.
Делаем бекап с удаленного фтп на локальный папку(для наглядности сделал командный файло)
1 2 3 4 5 6 7 | #!/bin/bash HOST="IP or name ftp" USER="login" PASS="password" LCD="/home/driver/www/local_dir" RCD="public_html/www" lftp -u $USER,$PASS -e "mirror --delete --only-newer --verbose $RCD $LCD ; bye;" $HOST |
параметры которые можно заюзать
—delete — удаляет лишние файлы, которые находятся в локальной директории
—only-newer — заставляет lftp копировать только новые файлы
—exclude - позволяет исключить ненужные директории
—verbose — позволяет наблюдать за процессом во всех его деталях
Если нам нужно восстановить поврежденные на сервере файлы:
—reverse нас спасет!!
2 ситуации:
1) на сервере что-то не ладное. вроде бы файлы есть, но некоторых нету, а в некоторых появлися подозрительный текст. вывод. просто синхронизируем локальную директорию на сервер.
1 | lftp -u username,password -e "mirror --reverse --delete --verbose /путь/до/локальной/директории путь/на/серваке; bye;" ftpsite |
убран параметр —only-newer. если бы она присутствовала, то lftp не трогал бы измененные на сервере файлы
2) мы изменили и добавили некоторые файлы на венике и хотим все это переписать на сервер.
1 | lftp -u username,password -e "mirror --reverse --only-newer --verbose /путь/до/локальной/директории путь/на/серваке; bye;" ftpsite |
здесь убран —delete
Отличный мануал!
Сам попал с пожаром в этом ДЦ, хорошо бекапы были…
Возник вопрос по тулзе lftp, в частности по приведенному коду — если после синхронизации я удалю файл с удаленного сервера, во время следующего запуска локальная копия этого файла так же удалится?
Надеюсь что понятно расписал вопрос.
Приветсвую!
Все зависит от параметров, если стоит параметр mirror —delete, то удаляет файл на локальном сервере если его нет на удаленном сервере с которого провожу синхронизацию
вообще список команд вот:
-c, —continue continue a mirror job if possible
-e, —delete delete files not present at remote site
-s, —allow-suid set suid/sgid bits according to remote site
—allow-chown try to set owner and group on files
-n, —only-newer download only newer files (-c won’t work)
-r, —no-recursion don’t go to subdirectories
-p, —no-perms don’t set file permissions
—no-umask don’t apply umask to file modes
-R, —reverse reverse mirror (put files)
-L, —dereference download symbolic links as files
-N, —newer-than FILE download only files newer than the file
-P, —parallel[=N] download N files in parallel
-i RX, —include RX include matching files
-x RX, —exclude RX exclude matching files
-I GP, —include-glob GP include matching files
-X GP, —exclude-glob GP exclude matching files
-v, —verbose[=level] verbose operation
—use-cache use cached directory listings
—Remove-source-files remove files after transfer (use with caution)
-a same as —allow-chown —allow-suid —no-umask
можно выбрать что душе угодно