237 votes

mv : Répertoire non vide

Je veux déplacer le contenu d'un répertoire dans un autre répertoire contenant les mêmes dossiers.

Voici un exemple :

J'ai ./backup qui a les répertoires base y test . Maintenant, je veux déplacer ces répertoires vers ./backupArchives .

J'utilise ceci :

mv ./backup/* ./backupArchives

mais j'ai obtenu l'erreur

mv: cannot move './backup/base' to './backupsArchive/base': Directory not empty

J'ai essayé d'utiliser --force mais pas de chance. Existe-t-il un moyen de le déplacer lorsque les dossiers existent déjà ?

Note : Je veux juste fusionner les contenus, il n'y a pas d'écrasement.

0voto

Noam Manos Points 279

Lors du déplacement d'un répertoire pendant l'exécution d'un script. Il faut tenir compte des répertoires inexistants ou vides, et forcer l'annulation et la suppression sans confirmation :

# If old directory exists, and isn't empty
if [[ -d old_dir ]] && [[ -n `ls -A old_dir` ]] ; then

  # Make a new directory (skip if already exists)
  mkdir -p new_dir

  # Copy all files to the new directory (-afr : Keep attributes, Force overwrite, Recursive copy)
  cp -afr old_dir/* new_dir/

  # Remove old directory
  rm -rf old_dir
fi

0voto

EsOsO Points 204

Je devais copier un très grand répertoire contenant de nombreux fichiers volumineux. liens durs aux fichiers originaux dans le répertoire cible comme suit :

cp -al ./backup/* ./backupArchives

J'ai ensuite supprimé les originaux, en ne laissant qu'un seul lien vers chaque fichier.

Étant donné que les hardlinks sont peu encombrants, vous pouvez même les utiliser pour copier le fichier backupArchives y backup vers un nouvel emplacement d'essai, et vérifiez que le nombre de fichiers est conforme à vos attentes, en tant qu'exécution fictive. Cela suppose que votre système de fichiers supporte les liens en dur - c'est le cas de ext4.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X