Nous voulons prendre une sauvegarde de tout sur notre serveur Debian, qui fonctionne à distance à l'autre bout du monde (hébergé par Linode), sans l'arrêter.
Ce système exécute shell, e-mail, XMPP / prosody et web, avec quelques configurations nginx simples.
Nous voulons sauvegarder des fichiers liés à ces choses juste pour être sûr. Par exemple, les fichiers que les utilisateurs ont stockés dans leurs répertoires personnels.
Nous n'avons pas besoin de copier exactement la configuration existante dans chaque fichier / etc; au lieu de cela, la raison pour laquelle nous faisons même la sauvegarde en premier lieu est pour que nous puissions tout déplacer vers une nouvelle configuration (une version plus récente de Debian toujours sur Linode).
Je vois que Linode propose un service de sauvegarde. Mais à long terme, nous avons également besoin de nos propres sauvegardes, ici, au cas où elles tomberaient en panne ou si quelque chose d'autre se produisait.
La raison pour laquelle cette question existe est que lorsque j'ai essayé de faire des sauvegardes dans le passé, j'ai continué à faire l'une de ces deux erreurs:
- Je suis allé "OK, je vais juste copier
/
et tout ce qui se trouve en dessous", puis je me suis retrouvé coincé dans une boucle infinie étrange à cause du lecteur sur lequel je copiais était monté sous / media / backup et il se copiait récursivement [obv ce problème spécifique ne s'applique pas ici puisque nous allons sauvegarder sur rsync ou similaire] ou il est coincé en essayant de copier des trucs "vivants" dans / proc ou / var ou autre, comme essayer de suivre les journaux en constante évolution, ou - Je suis allé "OK, je vais juste prendre le strict minimum de ce dont nous avons besoin ... hmm, les répertoires personnels de tout le monde et nos répertoires de serveur Web (tous ci-dessous
/var
) et accrochons une copie de/etc
et tous les anciens mails sous / var / vmail "et puis j'ai invariablement foutu les autorisations de fichiers ou les horodatages (je vais m'assurer que je ne sauvegarde pas les fichiers unix sur un lecteur FAT cette fois) ou j'ai oublié quelque chose (" oh, shoot, j'avais des scripts personnalisés dans / usr / local / bin que je n'ai jamais stocké ailleurs, j'ai oublié de les obtenir, je suppose qu'ils sont partis maintenant ").
Donc, obv copier tout le lecteur directement a conduit à des pièges et la copie sélective de répertoires a conduit à des pièges. Je veux savoir comment le faire correctement.
La question de panne de serveur De quoi a-t-on besoin pour un système de sauvegarde complet? couvre la philosophie et les bonnes pratiques, mais je recherche ces détails plus spécifiques de:
- Quels répertoires dois-je copier et lesquels dois-je exclure (étant donné que c'est un système qui fonctionne actuellement et qui sert un wiki, un chat XMPP, un courrier électronique - avec de nouveaux messages qui arrivent pendant que le travail de copie est en cours d'exécution)
- Quels attributs de fichier tels que les horodatages et le propriétaire et le groupe dois-je présenter et comment dois-je procéder? ← Je pense que je peux répondre à cette moitié de la question moi - même avec quelque chose comme ... euh ...
rsync -HXaz
je pense est une bonne option pour nous? L'-z
obv n'est pas vraiment lié à la question qui est "qu'est-ce que je préserve"
Un grand nombre des conseils de sauvegarde que je vois, comme l'utilisation dd
, semblent présupposer que le lecteur n'est pas monté et n'est pas utilisé. Mais suis - je pas censé exclure « vivant » comme des répertoires / proc et certains des sous - répertoires sous / var (cependant, certaines des choses sous / var Je sais que nous vraiment faire besoin de garder) et / montage? À quoi d'autre dois-je penser dans cette situation? Ensuite, je suppose que je peux simplement le snarf avec rsync et en utilisant un tas de --exclude
drapeaux.
Ou existe-t-il de meilleures idées, en particulier celles qui conviennent aux logiciels libres?
cp -r -a
conserve autant d'attributs de fichier que possible lors de la copie de fichiers (en fonction de ce que le système de fichiers cible prend en charge). Le -a
drapeau demande cp
de conserver les attributs. Pour copier sur un réseau ou via un système de fichiers qui ne prend pas en charge les attributs requis, cela tar -c
a toujours fonctionné pour moi, bien que je pense qu'il existe certains cas marginaux qu'il ne couvre pas et, en particulier, je crois que, tar
par défaut, il dépend des noms d'utilisateur correspondant à les deux systèmes. Cela dit, j'ai copié un système Linux entier (non monté) en utilisant tar
sans aucun problème apparent.