Архивируем файлы до 1 мегабайта
Решение к сожалению не на всех хостингах пройдёт, но в консоли ssh выполнится точно:)
Задача сегодня сделующая: достаточно часто при переносе сайта необходимо сделать резервную копию, в которую будут входить только файлы меньше одного мегабайта
Для решения задачи нам понадобится базовое знание unix команд и немного свободного времени.
Небольшой ман по командам которые нам пригодятся:
find
-
1-name
— искать по имени файла, при использовании подстановочных образцов параметр заключается в кавычки.
-
1-type
— тип искомого: f=файл, d=каталог, l=связь (link).
-
1-user
— владелец: имя пользователя или UID.
-
1-group
— владелец: группа пользователя или GID.
-
1-perm
— указываются права доступа.
-
1-size
— размер: указывается в 512-байтных блоках или байтах (признак байтов — символ «c» за числом).
-
1-atime
— время последнего обращения к файлу.
-
1-ctime
— время последнего изменения владельца или прав доступа к файлу.
-
1-mtime
— время последнего изменения файла.
-
1-newer
— искать файлы созданные позже указанной даты.
-
1-delete
— удалять найденные файлы.
-
1-ls
— генерирует вывод как команда ls -dgils.
-
1-print
— показывает на экране найденные файлы.
-
1-exec command {} ;
— выполняет над найденным файлом указанную команду; обратите внимание на синтаксис.
-
1-ok
— перед выполнением команды указанной в -exec, выдаёт запрос.
-
1-depth
— начинать поиск с самых глубоких уровней вложенности, а не с корня каталога.
-
1-prune
— используется, когда вы хотите исключить из поиска определённые каталоги.
tar
tar <операторы> [опции]
- Операторы:
- A –catenate –concatenate
- c –create
- d –diff –compare
- r –append
- t –list
- u –update
- x –extract –get
- –delete
Опции:
- -C, –directory DIR
- -f, –file F
- -j, –bzip2
- -p, –preserve-permissions
- -v, –verbose
- -z, –gzip
Теперь, когда мы знаем команты (вы их тек же можете найти выполнив man tar и man find) можем приступить к написанию нашей команды, котора заархивирует нам все файлы меньше одного метра.
1
|
find /path -size -1M -type f -exec tar rf archive.tar {} ;
|
а теперь разберём что эта команда делает.
/path – тут мы указываем путь откуда мы будем искать
- size -1M размер файла в 1 мегабайт
-type f говорим что тап объектов должен быть файл
-exec tar выполняем команду tar для найденых файлов
tar rf archive.tar добавляем в архив с названием archive.tar новый найденый файл
если вы захотите дополнительно сжать файлы в gzip то простопоменяйте в опциях rf на rzf
для выполнения архивации из php выполните команду
1
|
<?system("find /path -size -1M -type f -exec tar rf archive.tar {} ;");?
|
Рекомендуем почитать