Quiero mover el contenido de un directorio dentro de otro directorio con las mismas carpetas.
He aquí un ejemplo:
Tengo ./backup
el cual tiene los directorios base
y test
. Ahora quiero mover estos directorios a ./backupArchives
.
Yo uso esto:
mv ./backup/* ./backupArchives
pero me salió el error
mv: cannot move './backup/base' to './backupsArchive/base': Directory not empty
Intenté usar --force
, pero no tuve suerte. ¿Hay alguna forma de moverlo cuando ya existen carpetas?
Nota: solo quiero fusionar contenidos, no se puede sobrescribir.
Respuesta1
Aunque su página de manual no lo documenta, mv
se negará a cambiar el nombre de un directorio a otro directorio si el directorio de destino contiene archivos. Esto es algo bueno en tu caso porque resulta que quieresunirel contenido de la fuente en el destino, lo cual mv
no servirá.
Úselo rsync -a backup/ backupArchives/
en su lugar. Después rm -rf backup/*
.
En lugar de usar rsync
, también puedes hacer lo clásico.
(cd backup && tar c .) | (cd backupArchives && tar xf -)
lo que te otorga más puntos geek.
Respuesta2
Rápido y sucio, si sabes lo que estás haciendo:
cp -r ./backup/* ./backupArchives && rm -R ./backup/*
Respuesta3
Después del directorio que necesita mover *
(representa cualquier texto o número). Por ejemplo:
mv /var/www/* /recovery/wwwrecovery/
Eso es todo, si mueves archivos, entonces lo haces como:
mv /var/www/index.php /recovery/index.php
Otra forma es empaquetar el contenido de esa carpeta usando tar:
tar -cvzpf backup.tar.gz /var/www
Luego muévalo a cualquier otro archivo. También recomiendo este paso porque el alquitrán lo comprime y lo hace más pequeño.
Para extraer los archivos a otra carpeta utilice
tar -xvzpf /var/www/
Si necesita copiar a una ubicación que no le pertenece, asegúrese de anteponer su comando al sudo
comando después de cualquier opción que decida usar.
sudo tar -cvzpf backup.tar.gz /var/www/
Respuesta4
Seguro rsync
que funciona, pero podría funcionar también para máquinas que no lo admiten rsync
(es decir, en cpanel, cuyo rsync no está instalado de forma predeterminada).
¿Qué pasa con el uso?
cd /path/to/backup/ && cp -R --parents ./* ../backupArchives
Luego elimine el backup
directorio si es necesario.
Nota 1: Debe acceder cd
al backup
directorio antes de ejecutar elcp -R --parents ...
Nota 2: Verifique dos veces el backupArchives
directorio si obtuvo los archivos nuevos de la copia de seguridad.