Подобно этому вопросу , и этот вопрос я хотел бы сделать один сжатый файл деготь (files.tar.gz) , который содержит все файлы PHP в моем вебсервера и все это подкаталоги, сохраняя структуру папок. Мой webroot называется public_html.

Я еще ничего не пробовал, потому что я не уверен, с чего начать. Второй вопрос, который я связал, на самом деле довольно близок к тому, что я ищу, но он делает каждый найденный файл отдельным GZ, если я правильно его прочитал.

На самом деле, монолитная природа смолы важнее для меня, чем сжатие gzip. Я просто хочу перетащить этот файл на мой компьютер с Windows, где я могу искать его с помощью инструментов, к которым я привык.

1 ответ1

4

find -iname '*.php' -print0 | xargs -0 tar -rf php_backup.tar

При этом используется второй ответ, с которым вы связаны, но вместо -c заменяется на -r

От man tar:

-c      Create a new archive containing the specified items.
-r      Like -c, but new entries are appended to the archive.  Note that
        this only works on uncompressed archives stored in regular files.
        The -f option is required.

Другой вариант - заменить -print0 на -exec. Я думаю, что это будет более эффективным, но оно может сломаться, если у вас есть тысячи или десять тысяч файлов.

[Редактировать]

1) -print0 и -0 после xargs нужны только в том случае, если в именах файлов есть неудобные разделители. (читать имена с пробелами). Тебе это может не понадобиться.

2) Я снова проверил команду и проверил ее. find /public_www -name '*.php' -print | xargs одну строку XARGS. Таким образом, пример, на который вы ссылаетесь, переводится в нечто вроде xargs -0 tar -cf docs.tar *.php и также должен работать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .