Назад | Перейти на главную страницу

Как файлы tar.gz * .php, * .txt, * .inc, * .js, * .css, * .php3?

Я хочу сделать резервную копию своего сервера, но не беспокоюсь об изображениях / видео и т. Д.

как я могу tar.gz все типы файлов, которые мне нужны (в основном текстовые файлы)?

Использовать --exclude=PATTERN из деготь.

Это будет «отрицательное перечисление». Для «положительного перечисления» вы можете сделать это:

find . -name "*.php" -o -name "*.txt" -o -name "*.inc" -o -name "*.js" -o -name "*.css" -o -name "*.php3" -print0 | xargs -0 tar zcvf backup.tar.gz

-print0 и -0 используются для имен файлов с пробелами.

Вы можете использовать найти команда для создания списка ввода для большинства версий деготь.

В зависимости от типа Unix, используемый вами синтаксис команды может отличаться. Например, в IBM AIX это будет примерно так:

$ cd /directory/you/want/to/archive
$ find . \( -name '*.php' -o \
            -name '*.txt' -o \
            -name '*.inc' -o \
            -name '*.js' -o \
            -name '*.css' -o \
            -name '*.php3' \) -print > /tmp/input.list
$ tar -c -L/tmp/input.list -f - | gzip -c > /path/to/backup.tar.gz

Если у вас есть модные утилиты GNU (/ Linux), вы можете:

$ cd /directory/you/want/to/archive
$ find . -regex '.*\.\(php\|txt\|inc\|js\|css\|php3\)' -print > /tmp/input.list
$ tar -c -z -T /tmp/input.list -f /path/to/backup.tar.gz

Если вы используете bash4 или zsh в качестве оболочки вы также можете выполнить эту задачу, не прибегая к find.

Во-первых, вам нужно включить необычную подстановку файлов. В Bash это можно сделать так:

shopt -s extglob globstar

В Zsh соответствующая команда:

setopt extendedglob

Остальное - кусок пирога:

tar zcvf archive.tgz /path/to/dir/**/*(*.php|*.txt|*.inc|*.js|*.css|*.php3)

В ** это рекурсивный подстановочный знак, который соответствует всем уровням подкаталогов. Скобка называется модификатор glob, и ограничивает совпадения предыдущих * подстановочный знак для тех, которые также соответствуют одному из *.php, *.txt, и т.д.