J'essaie de prendre régulièrement des instantanés d'un dossier massif.
J'ai lu ici: http://www.mikerubel.org/computers/rsync_snapshots/#Incremental
qui cp -al
prend un instantané d'un dossier en copiant simplement les liens durs.
C'est très bien, mais le problème est que dans cet instantané, si je change un fichier, il change dans tous les instantanés. Ce que j'aimerais à la place, c'est que le système crée un nouveau fichier lors de la modification et un lien vers celui-ci à la place. De cette façon, chaque instantané ne deviendrait pas invalide lors d'une modification du premier fichier.
Comment puis-je y parvenir?
ps j'ai essayé rsync -a --delete --link-dest=../backup.1 source_directory/ backup.0/
, mais il a le même problème.
rsnapshot
est bonCe que vous recherchez est une forme de copie sur écriture , où plusieurs fichiers ayant le même contenu utilisent le même espace sur le disque jusqu'à ce que l'un d'eux soit modifié. Les liens matériels n'implémentent la copie sur écriture que si l'application qui effectue l'écriture supprime le fichier et crée un nouveau fichier du même nom (ce qui se fait généralement en créant un nouveau fichier sous un nom différent, puis en le déplaçant). L'application que vous utilisez ne le fait évidemment pas: elle écrase le fichier existant.
Certaines applications peuvent être configurées pour utiliser la stratégie de remplacement. Certaines applications utilisent la stratégie de remplacement par défaut, mais utilisent la stratégie de remplacement lorsqu'elles voient un fichier avec plusieurs liens durs, précisément pour ne pas rompre les liens durs. Votre technique actuelle de capture d'écran fonctionnera si vous pouvez configurer votre application pour la remplacer au lieu de l'écraser.
Fl-cow modifie les programmes pour utiliser systématiquement la stratégie de remplacement sur les fichiers avec plusieurs liens durs.
Alternativement, vous pouvez stocker vos fichiers sur un système de fichiers qui effectue la copie sur écriture ou la déduplication, ou avoir une fonction de capture instantanée, et ne pas vous soucier des liens matériels: Btrfs ou Zfs . Selon votre schéma de partitionnement, l'utilisation d'instantanés LVM peut être une option.
Ma recommandation est d'utiliser un outil d'instantané approprié. Faire des sauvegardes fiables est étonnamment difficile. Vous voulez probablement rsnapshot .
la source
Ce qui suit est un script ruby que j'ai écrit qui enveloppe le "cp -al" et rsync dans un joli script qui peut être exécuté manuellement ou via cron. La destination peut être locale ou distante (via ssh):
Ghetto Timemachine
La réponse de base à votre question, comme mentionné dans un commentaire précédent, la source doit être tenue à l'écart des liens durs. Par exemple, supposez une sauvegarde quotidienne de votre répertoire personnel:
La source:
Destination:
Les liens durs sont créés en exécutant "cp -al" contre la sauvegarde d'hier. Disons que c'est mardi matin lorsque vous l'exécutez:
cd /data/backup/daily
rm -rf tuesday
cp -al monday tuesday
rsync -a --delete /home/flakrat /data/backup/daily/tuesday/
la source
rdiff-backup semble faire ce que vous voulez, vérifiez-le.
En utilisant rsync, vous devez d'abord effectuer une sauvegarde complète sans utiliser de liens durs. La sauvegarde suivante peut pointer vers la sauvegarde précédente et un lien dur vers celle-ci. De cette façon, vos sauvegardes ne sont pas liées à vos fichiers de travail (ceux que vous modifiez). Exemple. Si ma sauvegarde précédente était la sauvegarde de dossier.01, mon script de sauvegarde incrémenterait d'abord les dossiers en les renommant d'un pour que la sauvegarde.01 devienne la sauvegarde.02. Ensuite, le script crée un nouveau dossier vide appelé backup.01. il serait alors rscync la nouvelle sauvegarde dans le nouveau dossier et un lien dur vers backup.02 afin que seuls les nouveaux fichiers prennent de la place dans la sauvegarde. La commande rsync ressemblerait à ceci: rsync -rlt sourcepath backuppath / backup.01 --link-dest = backuppath / backup.02
Ainsi, vous pouvez voir que toutes les liaisons physiques se produisent sur le chemin de sauvegarde. De cette façon, vous n'avez pas à vous soucier de la copie lors de l'écriture lorsque vous modifiez des fichiers dans votre chemin source.
la source