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

Как написать команду rsync для резервного копирования всего, кроме файлов, специфичных для оборудования

У меня есть производственный сервер VPS, который обслуживает веб-приложения, которые я делаю для клиентов. У меня есть задание rsync cron, запущенное на моем сервере разработки, которое выполняет ежедневное резервное копирование всего рабочего сервера.

#!/bin/sh

RSYNC=/usr/bin/rsync
SSH=/usr/bin/ssh
KEY=/root/backup-rsync-key
RUSER=root
RHOST=xxx.xxx.xxx.xxx
LPATH=/home/backup
RPATH=/

$RSYNC -avz -e "$SSH -i $KEY" $RUSER@$RHOST:$RPATH $LPATH

Работает нормально, но выдает ошибки типа:

...
rsync: read errors mapping "/sys/module/yenta_socket/parameters/disable_clkrun": No data available (61)
ERROR: sys/module/yenta_socket/parameters/isa_probe failed verification -- update discarded.
rsync: read errors mapping "/sys/module/yenta_socket/parameters/isa_probe": No data available (61)
ERROR: sys/module/yenta_socket/parameters/pwr_irqs_off failed verification -- update discarded.
rsync: read errors mapping "/sys/module/yenta_socket/parameters/pwr_irqs_off": No data available (61)
ERROR: sys/power/state failed verification -- update discarded.
rsync: read errors mapping "/sys/power/state": No data available (61)
rsync error: some files could not be transferred (code 23) at main.c(1298) [generator=2.6.8]

(это всего лишь фрагмент ошибок)

Как я могу сделать резервную копию всего, кроме того, что не создается?

Спасибо

Вы должны исключить ненужные файлы.

Хорошее начало -x

-x, --one-file-system       don't cross filesystem boundaries

(из man rsync (1)). Это исключает файловые системы, которые вы не указали явно. Помните, что затем вам нужно перечислить все точки монтирования, которые вы хотите включить. mount дает список для вас.

Еще один полезный вариант - --exclude:

--exclude=PATTERN       exclude files matching PATTERN
--exclude-from=FILE     read exclude patterns from FILE

Ваша команда будет выглядеть примерно так

rsync -avzx --exclude=/tmp --exclude=/var/cache -e "$SSH -i $KEY" $RUSER@$RHOST:$RPATH $LPATH

Вы можете исключить определенные файлы, используя параметр --exclude, например --exclude = / sys. Кроме того, вы можете использовать параметр --exclude-from, чтобы исключить файлы, перечисленные в конкретном файле.

Взгляните на --exclude-from Параметр командной строки, который позволяет вам определить файл, содержащий список файлов и каталогов, которые rsync должен исключить.