У меня есть производственный сервер 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 должен исключить.