2017-06-29 3 views
0

J'essaye de mettre en place une sauvegarde automatique sur un système Raspberry pi connecté à un disque dur externe.Comment comparer deux répertoires, et si ce sont les EXACT MEME, supprimer le second

Fondamentalement, j'ai des dossiers partagés et ils sont montés via Samba sur le rPI sous

/mnt/Comp1 

/mnt/Comp2 

je alors le disque dur externe branché et monté avec deux dossiers sous

/media/external/Comp1 
/media/external/Comp2 

Je vais ensuite exécuter une copie récursive de/mnt/Comp1 * vers/media/external/Comp1/* et la même chose avec Comp2.


Ce que je besoin d'aide avec est à la fin des copies (parce que ce sera un total de 5 ordinateurs), je voudrais vérifier que tous les fichiers transférés, et s'ils l'ont fait et tout est l'externe, alors je peux supprimer de la machine locale automatiquement. Je comprends que c'est risqué, parce que presque inévitablement il va supprimer des choses qui ne peuvent pas être sauvegardées, mais j'ai besoin d'aide pour savoir par où commencer.

que j'ai trouvé beaucoup d'informations sur le contrôle contenu d'un dossier, et je sais que je peux utiliser la commande diff, mais je ne sais pas comment l'utiliser dans ce pseudo-code

use diff on directories /mnt/Comp1/ and /media/external/Comp1 

if no differences, proceed to delete /mnt/Comp1/* recursively 

if differences, preferably move the files not saved to /media/external/Comp1 

repeat checking for differences, and deleting if necessary 
+2

Avez-vous essayé 'si diff -q/chemin/dir1/chemin/dir2; alors rm -r/chemin/dir2; fi' (pour supprimer 'dir2' si' dir1' et 'dir2' sont les mêmes?' 'diff '' est assez bon pour expliquer les options Utiliser' else' pour effectuer le déplacement si des différences sont trouvées –

+0

J'apprécie votre prompt Je vais tester cela plus tard sur le système lui-même, il semble que cela fonctionnerait, puisque je viens de le tester sur mon ordinateur local.Qu'est-ce que fi fait? Et aussi, s'il n'y a pas de différence, la commande de copie a un moyen Puis-je faire autre chose? Puis-je faire autrement cp -n/chemin/dir1/*/chemin/dir2/*? – rAFTA

+1

Ceci est un problème résolu.Utilisez 'rsync'. – chepner

Répondre

0

Essayez quelque chose comme:

diff -r -q d1/ d2/ >/dev/null 2>&1 

vérifier la valeur de retour avec $? supprimer le d2, si la valeur de retour est 1.