Я хочу сделать резервную копию своего сервера, но не беспокоюсь об изображениях / видео и т. Д.
как я могу 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
, и т.д.