Полезные утилиты для работы с файлами в Linux

Одна из основных задач системного администратора — создавать бэкапы и поддерживать их в актуальном состоянии. Каждый раз полностью копировать каталоги в большинстве случаев слишком затратно, а обновлять в бэкапе только модифицированные файлы вручную сравнивая даты нереально трудоёмко. На помощь приходит утилита rsync. Она позволяет обновлять измененные с момента последнего бэкапа файлы (и каталоги, конечно же) в автоматическом режиме.

Для начала рассмотрим вариант копирования данных на другой диск той же машины:

/usr/bin/rsync -rltv --perms --delete --chmod=a+rwx,go-w --stats /files/ /files_backup/

-r - рекурсивно обходить каталоги (т.е. обрабатывать вложенные папки)
-l - копировать символьные ссылки в виде символьных ссылок
-t - сохранять временнЫе метки файлов (дата создания/модификации)
-v - ну это verbose режим, пояснения наврядли требуются
--perms - сохранять параметры доступа к файлам (которые задаются chmod/chgrp)
--delete - удалять из бэкапа файлы, которые отсутствуют в бэкапируемом каталоге. (!)
--chmod=a+rwx,go-w - задаем новые права доступа к файлам при копировании. В отдельных случаях очень удобная штука
--stats - выводить статистику по скопированным файлам
/files/ - соответственно ЧТО бэкапим; /files_backup/ - куда

Если требуется делать резервные копии с удаленного сервера, можно воспользоваться такой командой:
rsync -rltv --perms --chmod=a+rwx --delete --stats -e "ssh -p 23" [email protected]:/var/www/ www/

-e - указываем в качестве удаленной оболочки клиент ssh. В данном случае сервер "слушает" 23 порт, в целях безопасности

Я логинюсь прямо в рута, но правильнее было бы использовать простую учетную запись пользователя, с правами на чтение каталога /var/www/. Вместо иксов подставляем IP адрес удаленного сервера.

Чтобы каждый раз не вводить пароль, организуйте доступ по rsa ключу. Инструкцию смотри в статье Linux. Строим туннель (VPN), с помощью OpenSSH


Автоматически удалять файлы старше определенного времени можно командой:
/usr/bin/find /files/RECYCLE/ -ctime +6 -type f -delete

-ctime +6 - файлы модифицированные неделю назад, или раньше
-type f - указывает тип - файлы
-delete - в комментариях не нуждается

Автоматически удалять пустые папки:
/usr/bin/find /files/RECYCLE/ -type d -empty -delete