Архивируем файлы до 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 {} ;");?



Рекомендуем почитать

 

Добавить комментарий


Ваше имя:


Комментарий:


Введите: Картинка