Esto debería ser muy simple para los expertos aquí.
Tengo una cuenta de Linux con una cuota de disco de usuario de solo 6 GB. Hay una carpeta de datos /opt
con aproximadamente 3 GB de datos cuando, cuando se comprime, llega a 1 GB. Hay algunos enlaces simbólicos dentro data-folder
. Por lo general, para hacer una copia de seguridad del trabajo, solía hacer lo siguiente.
cp -rvfL /opt/data-folder ~/
cd ~/
tar -zcvf data-folder.tar.gz data-folder
rm -rvf data-folder
Ahora ya he consumido 2.5GB en mi cuota de disco de usuario, tengo suficiente espacio para copiar archivos a mi casa, pero no a tar
ella nuevamente.
¿Hay alguna forma de tar y copiar la carpeta con un solo comando, por ejemplo, usando una tubería?
PD: No puedo /opt
ingresar porque solo tengo acceso de lectura /opt
.
cd /opt; tar zcf $HOME/junk.tar.gz junk
.Respuestas:
¿Desea crear un archivo tar lejos del lugar donde residen los archivos que necesita para tar?
Hay muchas maneras de hacer esto.
Si se va a crear localmente (= en la misma máquina):
Puede agregar archivos o directorios adicionales a tar al final de ese comando.
Si se va a crear de forma remota (es decir, si desea crear el archivo tar en un host remoto desde el que contiene los datos que se van a tarar):
La versión posterior es muy versátil. Por ejemplo, también puede "duplicar" un directorio + subdirectorios utilizando la misma técnica:
Duplicar un directorio + subdirigir a otro directorio local:
Duplicar un directorio + subdividir a otro directorio remoto:
Suelte la 'v' si no la necesita para mostrar los archivos, ya que están tar-ed (o sin restricciones): luego irá mucho más rápido, pero no dirá mucho a menos que haya un error.
Uso ". / ..." para que la fuente fuerce el alquitrán a almacenarlo como una ruta RELATIVA. En algunos casos, querrá agregar información de ruta adicional:
Por ejemplo, para tar los archivos crontab, incluido el de / etc, puede hacer:
Utilizo a propósito la ruta relativa: algunas versiones antiguas de tar pueden ser peligrosas y extraer archivos con su ruta GLOBAL original, lo que significa que podría hacer:
cd /safedir ; tar xvf sometar
y hacer que los archivos con nombres globales sobrescriban los archivos en su ruta original, que está FUERA de / safedir y no debajo! Muy peligroso, y aún posible, ya que existen servidores de producción antiguos. Es mejor usarlo para usar rutas relativas todo el tiempo, incluso si usa un alquitrán más reciente.fuente
-cvf
lugar decvf
, otros no reconocerán el-
estilo. Yz
solía significar "comprimir con 'comprimir'", pero en alquitrán "reciente" significa "comprimir con gzip". Se puede saber qué se utiliza la compresión en un archivo con:file zefile
. Y luegocompress
cámbiele el nombre como corresponda (si usa alquitrán , debería cambiarse el nombre .tar.Z no .tar.gz)Utiliza la
-h
opción tar. Desde la página del manual:para que puedas usar
tar -zcvfh data-folder.tar.gz /opt/data-folder
fuente
bsdtar
lugar, opax
(cd /opt && pax -Lw data-folder | gzip > ~/data-folder.tar.gz
) que detectaría los buclestar -rf <tarfilename> <filename>
para agregarlos al archivo tar existente.