J'ai mon application sur un VPS (Ubuntu Server 18.04), et l'hôte peut faire des sauvegardes hebdomadaires de tout le système.
Mais cela ne suffit pas, alors je veux faire mes propres sauvegardes (en plus, j'avais des fichiers de sauvegarde d'hôtes qui échouaient dans le passé), mais pas tout le système.
Les sauvegardes incrémentielles doivent être dans une structure de dossier/directeur (tous les emplacements multiples dans le même dossier de date, mais restent incrémentiels):
Automatiser le processus, à faire quotidiennement
J'ai lu sur rsync et chron, mais je ne sais pas:
J'ai également dû lire un document pour me préparer à atteindre votre objectif, commençons! Sans connaître le type de données et la fréquence d'accès, vous pouvez utiliser rsync pour synchroniser le dossier que vous souhaitez sauvegarder dans un répertoire temporaire afin d'effectuer la sauvegarde incrémentielle. Je suggère d'utiliser tar pour compresser 7Zip pour encription et pour la copie distante.
Donc ce que je vais faire a fait cette tâche, en supposant que les dossiers à sauvegarder soient / home/utilisateur et / home/utilisateur2 le répertoire temporaire est / media/Sauvegarde/nom_dossier__date1. Je vais démarrer un script avec deux travaux rsync, l'un pour le dossier, afin d'obtenir la structure suivante:
mkdir -pv /media/Backup/folder_name__`date +%Y%m%d`
Backup/
└── folder_name__20180910
├── user
└── user1
la commande rsync pour le faire est la suivante:
rsync -a /home/user /media/Backup/folder_name__20180910
rsync -a /home/user1 /media/Backup/folder_name__20180910
ATTENTION: si le chemin source se termine par un / sera ne créez pas de dossier de destination, mais synchronisez toutes les données du dossier de destination racine.
Maintenant que vous avez une copie exacte dans un endroit où vous êtes certain que les données ne seront pas accessibles au cours du processus de sauvegarde, il est important de garantir la qualité des données et de permettre à tar de fonctionner correctement. Il fonde l'incrémental sur l'horodatage des fichiers. Créons notre archive:
tar --create \
--file=/path/where/you/like/folder_name__20180910.tar \
-C /media/Backup/ \
--listed-incremental=/var/log/db.snar \
folder_name__20180910
IMPORTANT: la base de données crée doit être la même à l'avenir, si cela change vous aurez toujours
Maintenant nous avons notre première sauvegarde! cryptons-le!
password=`date | md5sum | cut -c1-15`
echo ${password} > /root/folder_name__20180910.pwd && chmod 400 /root/folder_name__20180910.pwd
/root/folder_name__date1.pwd
7z a -mhe=on -p`echo ${password}` \
-t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on \
/path/where/you/like/folder_name__20180910.7z \
/path/where/you/like/folder_name__20180910.tar
ici, nous générons un mot de passe aléatoire à partir de la somme de date md5 (vous pouvez utiliser différentes méthodes). Enregistrez le mot de passe dans un fichier correspondant à l'archive et enregistrez-le dans le dossier/racine après avoir créé l'archive compressée.
dernière étape, copiez-le à distance sur un service cloud, je suppose que vous lisez la documentation et que le compte dans rclone est configuré comme remotecopydata et si vous voulez remotecopypassword
rclone copy /path/where/you/like/folder_name__20180910.7z remotecopydata:Backup
rclone copy /path/where/you/like/folder_name__20180910.7z remotecopypassword:Backup
BASH Pour automatiser en bash de manière rapide et sale, vous pouvez simplement adapter la commande de ce post dans un fichier, cela devrait fonctionner! Pour ajouter un peu de contrôle, lisez la documentation de bash sur tlpd.org ou cherchez également ici, beaucoup de questions sur la commande de bash pour savoir comment faire quelque chose.
Pour que le script s'exécute automatiquement tous les jours à minuit:
crontab -e
et ajouter:
[email protected]
0 0 * * * /path/to/your/scrypt.sh
mAILTO = laisser tous les messages du script envoyés au courrier électronique configuré. Ajoute un peu de contrôle au script avant de l'exécuter automatiquement
C'est tout, j'espère que vous trouverez cet article utile!
Je vous suggère d'installer rsnapshot. Dans le fichier de configuration, vous pouvez définir les éléments suivants:
backup /etc/ localhost/
définirait/etc/à sauvegarder dans le dossier localhost /. Ainsi, vous pouvez également sauvegarder d'autres répertoires et les placer ailleurs (bien que je vous suggère de créer un emplacement de sauvegarde pour chaque hôte que vous prévoyez de sauvegarder).
rsnapshot effectue des sauvegardes incrémentielles et économise de l'espace en utilisant des liens symboliques. Ainsi, chaque sauvegarde est une sauvegarde complète du répertoire en question, sans utiliser d'espace supplémentaire.
Pour automatiser cela, définissez un travail cron. Exécutez Sudo crontab -e
et ajoutez des règles comme celle-ci:
0 4 * * * /usr/bin/rsnapshot alpha
0 3 * * 3 /usr/bin/rsnapshot beta
0 2 1 * * /usr/bin/rsnapshot gamma
Cela effectue une sauvegarde alpha quotidienne, une sauvegarde bêta une fois par semaine le mercredi et une sauvegarde gamma une fois par mois. Bien sûr, définissez ceci comme vous le souhaitez. Les documentations ont des recommandations, y compris l'ordre (en un jour) entre alpha, bêta et gamma. Rien de tout cela (jusqu'à présent) ne nécessite un script bash. rsnapshot
et cron
gérera tout ici.
Cependant, la dernière chose que vous souhaitiez est le chiffrement et le téléchargement sur le cloud. Honnêtement, je ne sais pas comment faire ça - désolé! Si je sauvegardais sur Dropbox, je devrais supprimer en permanence des fichiers ... ce que rsnapshot fait déjà.
Je suppose que vous pouvez utiliser tar
et gzip
pour archiver et compresser, puis gpg
pour chiffrer. Mais si vous avez un autre ordinateur ou un NAS à la maison ou au travail, je vous suggère simplement de copier vos fichiers dessus. Ou, comme le dit le fichier de configuration (/etc/rsnapshot.conf
), vous pouvez sauvegarder un autre ordinateur à distance. c'est à dire.:
backup [email protected]:/etc/ example.com/
Il existe des options pour monter (c.-à-d. Attacher) un lecteur externe, le sauvegarder puis le démonter également.
Quoi qu'il en soit, je sais que ce n'est pas tout ce que vous avez demandé, mais j'espère que cela vous aidera.