Copie tous les fichiers d’un dossier à l’autre

J’essaie de créer un script shell bash pour le cronjob quotidien.

Le script consiste à copier tous les fichiers avec l’extension txt (y compris les sous-répertoires) du dossier “fromDir” vers le dossier “toDir”.

Cela rendra également le répertoire “toDir” s’il n’existe pas.

J’essaie d’utiliser tar ici pour compresser les fichiers et les décompresser après le déplacement pour accélérer le temps passé pendant le transfert, le dossier cible doit avoir exactement la même structure que le dossier d’origine.

#!/bin/bash -l fromDir='c:/fromFolder/' ; toDir='c:/toFolder/' ; find $fromDir -maxdepth 3 -name '*.txt' -print | tar zcvf - -T - | mkdir -p -m 777 $toDir ; cd $toDir && tar zxvf - 

Si vous pouviez utiliser rsync, vous pourriez essayer ceci:

 rsync -av --include="*/" --include="*.txt" --exclude="*" ~/from/ ~/to/ --dry-run 

Cela peut être interprété comme pour inclure chaque répertoire avec *.txt et exclure toute autre chose (l’ordre est important)

L’option --dry-run est juste pour imprimer ce qui sera fait mais aucun fichier ne sera copié.

1er voir mon commentaire, alors si vous ne supportez pas l’argument -C (changez en dir befor tar), vous pouvez essayer ceci:

 #!/bin/bash fromDir='c:/fromFolder/' ; toDir='c:/toFolder/' ; mkdir -p -m 777 $toDir ; find $fromDir -maxdepth 3 -name '*.txt' -print | tar zcf - -T - | ( cd $toDir tar zxvf - )