Cuando copio archivos de una partición ext3 a una fat32 usando cp:
cp -R /ext3/stuff /fat32/partition/
Recibo mensajes de argumentos no válidos para todos los archivos con dos puntos y signos de interrogación.
¿Hay alguna forma de hacer que cp elimine los caracteres no válidos para el sistema de archivos de destino?
editar: he revisado las opciones de cp nuevamente, y a menos que sea estúpido, no hay nada allí. Estoy seguro de que podría escribir un guión, ¡pero parece que debería haber una solución más limpia!
fuente
Basado en una publicación de Gilles probé la siguiente lista:
Traté de copiar eso en la tarjeta MicroSDHC del teléfono Android con el sistema de archivos vfat y el
pax
comando refinado hasta que todo funcionó. Es posible que aún no sea suficiente para Windows y Unicode:También puede usar la opción -k para asegurarse de que no se sobrescriban (debido a colisiones en los nombres de archivo). Ambas listas que di en el comentario eran diferentes del comportamiento de Linux vfat.
fuente
Recibí el "argumento no válido" al copiar con cp -r source usbstick y descubrí que la causa era un nombre de archivo fuente que terminaba con un espacio. Al eliminar el espacio se borró el mensaje. El archivo con nombre incorrecto sucedió BTW en este caso para estar en los directorios del programa de correo.
fuente
Simplemente tenía motivos para necesitar hacer esto, y aunque la
pax
respuesta basada en la respuesta era buena, todavía tenía problemas con los caracteres acentuados.Así que me pareció más fácil de usar
tar
y conseguí que reemplazara todos los caracteres no permitidos con guiones bajos:Es indudablemente posible obtener una mejor lista de caracteres permitidos que la anterior, pero esto funciona.
fuente
Después de leer las respuestas a esta pregunta muy interesante y experimentar un poco con la tarjeta SD para Android (exfat) y un sistema de entretenimiento para el automóvil (vfat), se me ocurrió este pequeño script bash.
Toma el destino (punto de montaje) como argumento y lo usa
find
para localizar todos los archivos en mi repositorio de música.Para cada ruta de archivo, calcula una ruta de destino y un nombre de archivo anteponiendo el destino y reemplazando cualquier carácter ofensivo con un guión bajo
_
. Yo uso una lista blanca de caracteres (letras, dígitos-
,/
,.
,.
(
,)
E_
) para eliminar cualquier puntuacion no deseado.Dependiendo de la configuración regional, esto dejará letras acentuadas en la ruta y el nombre del archivo, lo cual está bien para los sistemas de archivos FAT modernos, como parece.
Para cada ruta y nombre de archivo de destino, los directorios se crean según sea necesario usando
mkdir -p
, luego el archivo se copia, a menos que ya exista.Tenga en cuenta los
"
caracteres de comillas en varios lugares, son necesarios para evitar que las rutas y los nombres con espacios se separen.fuente