Llamo al comando zip desde un script donde no puedo cambiar el directorio. Necesito hacer un archivo zip de las cosas data/kit123/
desde el directorio en el que residen los datos, pero quiero que el contenido del zip solo sea el contenido de kit123
, con rutas relativas a kit123
.
Esta es la estructura del directorio.
myworkingdir
data
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
...
kit124
...
Mi script se ejecuta en myworkingdir y no puede cambiar los directorios.
Si llamo
zip -r kit123.zip data/kit123
entonces la estructura en el archivo zip será
data
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
pero quiero que sea
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
¿Existe una opción de zip que pueda usar para lograr esto? Parece extraño que dependa de mi directorio de trabajo
Sé que no es -j. ese destruye la estructura dentro del kit123
command-line
zip
Nathan
fuente
fuente
zipfile.write(arcname=
permite por cierto: docs.python.org/3.6/library/zipfile.html#zipfile.ZipFile.writeRespuestas:
Como observa en los comentarios, ahora sabe cómo cambiar el directorio con su script, explicaré la situación con zip con respecto a las rutas relativas.
Es probable que sea más fácil de abrir terminal y
cd
akit123
; tiene que hacer que el directorio de destino sea su directorio de trabajo: no puede ejecutar el comando desde la base de su directorio de inicio o tomará todas las rutas de/home/$USER/..
Si usa la-j
opción, eliminará todas las rutas, ya que no hay No es realmente un equivalente de la opción tar--strip
con la que se pueden especificar diferentes niveles de eliminación de ruta.Entonces, cd a su directorio objetivo (
kit123
) e ingrese:Esto
-r
conservará de forma recursiva ( ) todos los*
archivos ( ) y directorios de archivos en el directorio actual (kit123
), y como las rutas relativas (-p
) se conservan automáticamente a menos que la-j
opción esté presente, la estructura del directorio será la deseada.Kit123
y subcarpetas (kitpart1
) con sus propios archivos estarán presentes:Puede verificar el contenido del archivo zip con
unzip -l zipfile.zip
.Para obtener más información sobre las otras opciones disponibles
zip
, consulteman zip
y la página de manual de Ubuntu en línea .fuente