Перетаскиваю довольно крупный проект — в сжатом виде >40 Гб.
Даже физически файлы перетащить — по времени половина дня уйдёт.
Пока перетащил, настроил, потестил — уже заново нужно перетаскивать в силу произошедших на сайте изменений.
Вот тут то и пригодится очень полезная команда, вернее связочка, добавляющая в архив только файлы созданные/изменённые за последние N дней
find . -type f -mtime -10 -print0 | xargs -0 tar -cjf archive.tar.bz2
В закладки, полезняшки и т.д. однозначно!
P.S.
ВНИМАНИЕ — на рабочем проекте у меня такая связка даёт сбой!!! думаю из за ограничения на длину данных передаваемых xargs
такая конструкция вроде пашет
find . -type f -mtime -10 -print0 | zip archive.zip @
ещё экспериментирую с параметром -n в xargs — пока безрезультатно
P.S.S.
Спасибо большое drBatty за помощь в решении проблемы в ветке форума
всё правильно: xargs режет список аргументов дозами по несколько сотен..тысяч имён файлов. Дальше у вас записано «tar —create» что значит «создать архив». Он и создаётся несколько раз. Вы наблюдаете только последний вариант.
Если вы хотите делать обязательно так, то вам следует использовать —append, которая не работает для сжатых файлов, потому вам следует ещё потом сжать, как в третьем варианте.
А вообще мне понравился вариант с промежуточным файлом — сначала выдёргиваем в файл все файлы find-ом, потом уже скармливаем его tar-у
updated 16.07.24 — добавил исключения на .git bitrix и resize_cache и log файлы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/bin/bash clear set —x TMP=$(mktemp) echo $TMP find —type f —mtime —6 \ —not —iname *.log —not —path «./.git/*» \ —not —path «./bitrix/*» \ —not —path «./upload/resize_cache/*» \ —print >$TMP tar —czf tar—new—files.tar.gz —T $TMP rm —force $TMP |