GNU/Linux >> Tutoriels Linux >  >> Linux

Comment copier des répertoires de manière récursive à l'aide de rsync tout en excluant des fichiers spécifiques

Question  :Comment copier des dossiers de manière récursive tout en excluant des dossiers/fichiers spécifiques lors de l'utilisation de rsync ?

En général, nous utilisons la commande 'cp' pour copier des fichiers, mais malheureusement, la commande 'cp' n'a pas la fonction "exclure", nous devons donc écrire des scripts pour exclure les fichiers indésirables, ou nous pouvons utiliser un autre outil ' rsync'.

À partir de la page de manuel de la commande rsync :

$ man rsync
...
  -r, --recursive             recurse into directories
  --exclude=PATTERN           exclude files matching PATTERN

La syntaxe de la commande rsync pour copier des répertoires tout en excluant des fichiers/répertoires spécifiques est la suivante :

$ rsync -r --exclude 'file_path' 'SRC' 'DEST'

Par exemple, si nous ne voulons pas copier tous les fichiers du dossier oracle vers oraclebak sauf "oracle/oradata/rmanbackup":

$ du -sh oracle/*
40K oracle/extapi
1.1G oracle/oradata                    ------> sub directory of oracle
4.0K oracle/test1
4.0K oracle/test2
4.0K oracle/test3
4.0K oracle/test4
4.0K oracle/test5
# du -sh oracle/oradata/*
4.0K oracle/oradata/date1
4.0K oracle/oradata/date2
4.0K oracle/oradata/date3
4.0K oracle/oradata/date4
4.0K oracle/oradata/date5
1.1G oracle/oradata/rmanbackup  -------> we need to exclude this directory

Le chemin d'exclusion est le chemin relatif du fichier sous « SRC », par ex. nous voulons exclure "oracle/oradata/rmanbackup", et le répertoire parent est oracle, donc le chemin d'exclusion est "oradata/rmanbackup":

# rsync -r --exclude 'oradata/rmanbackup' oracle/ oraclebak
# du -sh oraclebak/oracle/*
40K oraclebak/oracle/extapi
24K oraclebak/oracle/oradata
4.0K oraclebak/oracle/test1
4.0K oraclebak/oracle/test2
4.0K oraclebak/oracle/test3
4.0K oraclebak/oracle/test4
4.0K oraclebak/oracle/test5

Vous pouvez également utiliser l'option "–exclude-from=FILE ” si vous avez plus de fichiers/répertoires à exclure. Dans ce cas, il vous suffit de lister les fichiers/répertoires à exclure dans un fichier et de fournir le chemin du fichier à l'option "–exclude-from="

# man rsync
--exclude-from=FILE     read exclude patterns from FILE

Par exemple :

# rsync -r --exclude-file=/tmp/exclude_list oracle/ oraclebak

Ici,
/tmp/exclude_list contient une liste de fichiers/répertoires à exclure lors de la copie des autres.


Linux
  1. Comment copier récursivement des fichiers par extension de fichier ? ?

  2. Comment utiliser la commande Rsync sous Linux ?

  3. Utiliser rsync pour synchroniser les fichiers

  4. Comment copier des répertoires dans un répertoire en utilisant install in bash ?

  5. Scp peut-il copier des répertoires de manière récursive ?

Comment sauvegarder des fichiers et des répertoires à l'aide de Rsync sous Linux

Comment copier des fichiers avec une extension de fichier spécifique de manière récursive

Comment exclure une extension de fichier spécifique lors de la copie récursive de fichiers

Comment copier des fichiers sous Linux à l'aide de la commande CP

Comment copier des fichiers et des répertoires dans un terminal Linux

Comment supprimer des fichiers et des répertoires à l'aide de la ligne de commande Linux