2 votes

Comment écrire une commande rsync pour sauvegarder tout sauf les fichiers spécifiques au matériel ?

J'ai un serveur de production VPS qui sert les applications web que je crée pour mes clients. J'ai une tâche cron rsync qui tourne sur mon serveur de développement et qui fait une sauvegarde quotidienne de l'ensemble du serveur de production.

#!/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

Il fonctionne correctement mais donne des erreurs du type :

...
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]

(ce n'est qu'un extrait des erreurs)

Comment puis-je sauvegarder tout ce qui n'est pas sauvegardé ?

Remerciements

7voto

Olli Points 768

Vous devez exclure les fichiers inutiles.

Un bon début est -x

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

(de man rsync(1)). Cela exclut les systèmes de fichiers que vous n'avez pas spécifiés explicitement. Rappelez-vous que vous devez alors lister tous les points de montage que vous voulez inclure. mount donne une liste pour vous.

Une autre option utile est --exclude :

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

Votre commande serait quelque chose comme

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

1voto

Luigi Points 44

Vous pouvez exclure des fichiers spécifiques à l'aide de l'option --exclude, comme '--exclude=/sys'. Vous pouvez également utiliser l'option --exclude-from pour exclure les fichiers répertoriés dans un fichier spécifique.

0voto

user9517 Points 113163

Jetez un coup d'œil à la --exclude-from qui vous permet de définir un fichier contenant une liste de fichiers et de répertoires que rsync doit exclure.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X