J'ai un répertoire appelé my_projects_linux
dans le système de fichiers Ubuntu, qui contient tout mon travail depuis de nombreuses années. Le répertoire contient des fichiers, des sous-répertoires, etc.
À des fins de sauvegarde, je copie parfois ce répertoire et tout son contenu sur un disque dur externe.
Par conséquent, le contenu de mon lecteur externe ressemble à ceci:
/mounted_drive/my_projects_linux
/mounted_drive/my_projects_windows # the same idea to backup Windows work
Par conséquent, ce que je recherche est une commande qui:
Travaillerait comme
cp /home/my_projects_linux /mounted_drive/my_projects_linux
Il convient de remplacer les anciens fichiers, sous-répertoires, fichiers dans les sous-répertoires, etc. du disque externe par le nouveau contenu de mon PC.
Soyez rapide. Il ne doit copier que les fichiers modifiés ou ceux qui viennent d'être créés. Étant donné que la taille de my_projects_linux
est supérieure à 50 Go, la copie prend plus d'une heure, ce qui est trop lent. En réalité, souvent, seuls quelques Mo ont été modifiés depuis la dernière sauvegarde. Par conséquent, une copie peut en principe être réalisée beaucoup plus rapidement.
Comment faire ça?
J'ai cherché sur Google que cp avec le drapeau -u
pourrait éventuellement correspondre à mes besoins. Cela fonctionnerait-il (par exemple, gérerait-il correctement les sous-répertoires des sous-répertoires)?
En outre, le stockage du système de fichiers sur un disque externe est-il un moyen approprié d'effectuer une sauvegarde ou existe-t-il un moyen plus sophistiqué? Par exemple, en utilisant un nuage? Notez que la méthode la plus sophistiquée doit être simple, sinon elle ne l'emportera pas sur la facilité d'exécution d'une commande Shell.
Vous décrivez en quelque sorte pourquoi rsync
a été conçu. De man rsync
:
Rsync finds files that need to be transferred using a "quick
check" algorithm (by default) that looks for files that have
changed in size or in last-modified time. Any changes in the
other preserved attributes (as requested by options) are made on
the destination file directly when the quick check indicates
that the file’s data does not need to be updated.
Le réseautage soulève également de nombreux problèmes, mais nous sommes également heureux de travailler au niveau local.
Vous avez essentiellement besoin de:
rsync -rtv /home/my_projects_linux /mounted_drive/my_projects_linux
Il y a une tonne d'options disponibles mais -rtv
synchronisera r de manière ecursive, en conservant le t imecode la même chose, tout en étant v énervé à propos de ce qu'il fait.
Je sais que cette question a déjà une réponse acceptée. Cependant, je voulais ajouter une solution graphique multi-plateformes car je vois que vous utilisez également Windows. J'utilise aux mêmes fins Freefilesync . C'est aussi FLOSS.
La configuration est absolument intuitive et vous pouvez enregistrer différentes tâches de synchronisation.
Il existe également un ppa, bien qu'il n'inclue pas la dernière version du 14.04 pour le moment. Pour installer via ppa:
Sudo apt-add-repository ppa:freefilesync/ffs
Sudo apt-get update
Pour répondre à votre deuxième question, un moyen plus sophistiqué de sauvegarder est rdiff-backup
.
rdiff-backup sauvegarde un répertoire dans un autre, éventuellement sur un réseau. Le répertoire cible constitue une copie du répertoire source, mais des différences inverses supplémentaires sont stockées dans un sous-répertoire spécial de ce répertoire cible, de sorte que vous pouvez toujours récupérer les fichiers perdus il y a quelque temps. L'idée est de combiner les meilleures fonctionnalités d'un miroir et d'une sauvegarde incrémentielle. rdiff-backup préserve également les sous-répertoires, les liens physiques, les fichiers de développement, les autorisations, la propriété des identifiants uniques (UID/gid), les temps de modification, les attributs étendus, les ACL et les ressources.
Et si vous voulez vraiment utiliser le cloud: j'utilise CrashPlan avec un abonnement payant. Alors vous jamais devez plus penser aux sauvegardes manuelles.