El problema es que quiero poder ver errores al mover un archivo, pero no puedo ver errores con problemas de permisos. En otras palabras, me importa si el archivo no se transmite completamente, pero no quiero ver errores como este:
mv: no se pudo conservar la propiedad de `/home/blah/backup/pgsql.tar.gz ': operación no permitida
Así que quiero algo como: mv $backupfile $destination --ignore-permissions
.
El archivo de copia de seguridad puede ser de 1 MiB a 5 GiB y se transfiere a través de NFS.
cifs
).Respuestas:
mv
es la herramienta incorrecta para este trabajo; quierescp
y luegorm
. Dado que está moviendo el archivo a otro sistema de archivos, esto es exactamente lo quemv
está haciendo detrás de escena de todos modos, excepto quemv
también está tratando de preservar los bits de permiso de archivo y la información del propietario / grupo. Esto se debe amv
que preservaría esa información si moviera un archivo dentro del mismo sistema de archivos emv
intente comportarse de la misma manera en ambas situaciones. Dado que no le importa la preservación de los bits de permiso de archivo y la información del propietario / grupo, no use esa herramienta. Usocp --no-preserve=mode
y en surm
lugar.fuente
cp --no-preserve=mode,ownership $backupfile $destination
verifica el código de salida y luego hazlorm $backupfile
si todo está bien.Cuando mueve un archivo dentro del mismo sistema de archivos,
mv
separa el archivo de su ubicación anterior y lo adjunta a su nueva ubicación; metadatos como los permisos siguen siendo los mismos. Cuando mueve un archivo a un sistema de archivos diferente,mv
copia el archivo, intenta replicar tantos metadatos como sea posible y elimina el original.Como se está moviendo a un sistema de archivos diferente y no desea replicar muchos metadatos, también podría copiar el archivo y luego eliminar el original.
Esto conserva los permisos del archivo hasta cierto punto (por ejemplo, legibilidad mundial, ejecubilidad). El tiempo de modificación del archivo no se conserva. Con GNU
cp
, puede usar la--preserve=…
opción para controlar qué metadatos se replican más finamente, por ejemplo--preserve=mode,timestamps
.También puede usar
rsync
y decirle lo que desea conservar. La opción-a
significa "preservar la mayoría de los metadatos", que incluye al propietario si se ejecuta solo como root.fuente
rsync
solución funciona de manera excelente. Había estado luchando tratando de transferir mi antigua instalación de ubuntu fuera del recurso compartido CIFS. Mi rsync no informó un error al mover el archivo, pero no lo movió y solo informó problemas de permisos.rsync
solución!