Empêchez CP hardlink en copiant des fichiers dans un sous-dossier

J’ai une structure de dossier comme celle-ci

a/ -b/ -c.txt -d.txt -backups/ 

Je veux déplacer le contenu du dossier a dans des backups afin que la structure du dossier soit la suivante.

 a/ -b/ -c.txt -d.txt -backups/ -b/ -c.txt -d.txt 

Voici les commandes que j’ai utilisées jusqu’à présent.

 for d in a/*/ ; do mkdir -p ${d}backups/ cp -ra ${d}* backups done 

Je fais les sauvegardes de dossier puis j’essaie de copier le contenu dans le dossier de backups . Cependant, je reçois l’erreur: CP Hardlink ne peut pas copier le dossier sur lui-même. Comment puis-je faire ceci?

Je vous remercie

 a ├── b ├── backups ├── c.txt └── d.txt 2 directories, 2 files 

Activez extglob avec shopt -s extglob et exécutez les cp -r !(backups/) backups . Le résultat suivant sera le résultat:

 a ├── b ├── backups │  ├── b │  ├── c.txt │  └── d.txt ├── c.txt └── d.txt 3 directories, 4 files 

il essaie de copier des “sauvegardes” dans des “sauvegardes”, vous devez donc vous assurer d’exclure les “sauvegardes” du motif a / * /.

vous devriez probablement utiliser “find” pour trouver des fichiers avec un pattern donné et exclure le répertoire “backup”. Avec find, vous pouvez faire “-not -name backup”