rsync
se puede llevar a carpetas móviles de manera muy similar y superior a la tradicional mv
con las siguientes opciones:
rsync -axvvES --remove-source-files source_directory /destination/
Sin embargo, una cosa que todavía no puedo hacer es eliminar los directorios originales. La --remove-source-files
bandera hace exactamente eso, elimina los archivos de origen, pero no también los directorios de origen. Ojalá hubiera una --remove-source-directories
bandera también, pero no la hay.
¿Cómo puedo lidiar con esto? Supongo que puedo emitir un mensaje rm -fr
después de la mudanza, sin embargo, preferiría mantener todo el procedimiento en un solo proceso en lugar de introducir posibles errores.
mv
?find . -type d -empty | xargs rmdir -p
rsync
sesión a una lista que luego se procesa siguiendo el proceso que luego lo limpia ... Hmm.Respuestas:
No he encontrado un comando que lo haga de una vez, pero dado que rsync aún funciona mejor que
rm -rf
(especialmente si tiene una gran cantidad de directorios) aquí hay dos comandos rsync que hacen un "movimiento" :fuente
El uso de " rm -rf " tiene una condición de carrera inherente, es decir, puede eliminar los archivos que se acaban de crear entre las invocaciones rsync y rm .
Prefiero usar:
Esto NO eliminará los directorios si no están vacíos.
fuente
-depth
OSX u otros.Terminé en una situación similar. Quería evitarlo
rm -rf
, sabiendo que rsync no pudo copiar algunos archivos, y no quería perderlos.Para eliminar simplemente los directorios vacíos, este es el más conveniente (desde
sourcedir
):fuente
¿Por qué no solo agregar
rm -rf source_directory
después de su rsync?Cada programa de línea de comandos está (idealmente) hecho para realizar una tarea específica, y depende de usted unir varios para realizar tareas más complejas.
fuente
find -depth
. ¿Tendría alguna sugerencia en cuanto a un enfoque algorítmico rápido para llegar al final de la pila de directorios, moverse con rsync, correr como se nota y luego retroceder en el árbol?