2009-07-13 7 views
0

D'accord SoF, c'est un peu difficile à expliquer, mais je vais essayer de mon mieux.Rsync aide

J'ai 2 lecteurs identiques. Appelons "S:" pour la source et "D:" pour la destination

S: est le lecteur que je conserve tous mes fichiers (images, musique, vidéos, documents, etc), et D: est une sauvegarde HD i (manuellement) sauvegarder tous les dimanches soirs.

Ce que je voudrais faire est de sauvegarder S: dans D :, avec quelques règles.

Comme, dis-je, je fais des sauvegardes une fois par semaine. Cela signifie que tout au long de la semaine, les fichiers sont ajoutés, supprimés et déplacés d'un dossier à un autre.

  1. seule copie de nouveaux fichiers ou les fichiers qui ont été modifiés (serait définie pour vérifier la Les métadonnées de fichier)

  2. A la fin de la sauvegarde, D: devrait finir par être identique à S :.

Signification, si je me suis déplacé un fichier à partir du dossier « A » dans le dossier « B » dans S :, le dos verrait que le fichier ne soit plus dans le dossier « A », et devrait le supprimer , pour rendre ce dossier identique à S :.

l'étape 2 a probablement été mal expliquée., alors voici une meilleure explication. Voilà comment je prévois de faire les choses si rsync ne peut pas le faire.

En python, je voudrais créer un script qui effectue les opérations suivantes (dans l'ordre):

  1. Compares D: S: - Le script d'abord traverser D :. chaque fois qu'il entre dans un répertoire, il regarde ce même répertoire dans S :. Il regarde ensuite les fichiers. Si un fichier est dans D: mais pas dans S :, cela signifie que le fichier a été supprimé ou renommé ou déplacé dans S :. Par conséquent, supprimez ce fichier de D: (répétez ce processus pour tous les dossiers)

  2. Maintenant que D: ont exactement les mêmes fichiers (ou moins s'ils ont été supprimés dans les étapes ci-dessus), démarrez la copie. Vérifiez d'abord si le fichier actuel dans S: existe dans D: sinon, copiez. Si c'est le cas, vérifiez les métadonnées. s'il a été modifié, copiez et remplacez.

Désolé si je ne l'ai pas expliquer cela aussi bien, il est 04h15, et franchement, im fatigué de supprimer manuellement tous D: et la copie des fichiers sur de S: =/

Répondre

2

Voici un script que j'ai écrit pour sauvegarder ma machine Linux sur une clé USB.

#!/bin/sh 

rsync -a \ 
    --progress \ 
    --hard-links \ 
    --whole-file \ 
    --delete \ 
    --delete-after \ 
    --delete-excluded \ 
    --stats \ 
    --filter='- *.log' \ 
    --filter='- /dev' \ 
    --filter='- /boot' \ 
    --filter='- /media/' \ 
    --filter='- /mnt' \ 
    --filter='- /net' \ 
    --filter='- /proc' \ 
    --filter='- /tmp/' \ 
    --filter='- /var/log/' \ 
//media/disk/middle-earth 

Les --filter lignes ne comprennent pas les fichiers/répertoires que je ne veux pas synchroniser.Vous pouvez l'utiliser comme point de départ pour créer le vôtre.

+0

merci. et j'ai oublié de mentionner qu'il y a un dir, je ne veux pas sauvegarder. – sqram

1

Je pense vous recherchez le commutateur --archive ainsi que --delete à rsync. C'est-à-dire, si j'ai raison de supposer que votre description signifie "je voudrais que D: ait le même contenu que S: après avoir fait une sauvegarde, sans avoir à tout effacer sur D: d'abord".

Je suppose également que même si vous utilisez la notation Windows pour les lettres de lecteur, vous n'utilisez pas réellement Windows.

+0

Je suis et je ne suis pas. Ces pilotes sont NTFS mais pas de système d'exploitation sur eux. Strictement pour la tenue de fichiers. J'y accède à la fois via ubuntu et windows. Merci pour la réponse, je vais me pencher sur --archive et --delete – sqram