Necesito hacer una copia de seguridad de un directorio bastante grande, pero estoy limitado por el tamaño de los archivos individuales. Básicamente, me gustaría crear un tar.(gz|bz2)
archivo que se divide en archivos de 200 MB como máximo. Clonezilla hace algo similar a esto al dividir las copias de seguridad de imágenes nombradas así:
sda1.backup.tar.gz.aa
sda1.backup.tar.gz.ab
sda1.backup.tar.gz.ac
¿Hay alguna manera de que pueda hacer esto en un solo comando? Entiendo cómo usar la split
comando, pero me gustaría no tener que crear un archivo gigante y luego dividirlo en archivos más pequeños, ya que esto duplicaría el espacio en disco que necesitaría para crear inicialmente el archivo.
Respuesta aceptada:
Puede canalizar tar al comando dividir:
tar cvzf - dir/ | split --bytes=200MB - sda1.backup.tar.gz.
En algunos sistemas *nix (como OS X) puede recibir el siguiente error:
split: illegal option -- -
En ese caso, intente esto (tenga en cuenta el -b 200m
):
tar cvzf - dir/ | split -b 200m - sda1.backup.tar.gz.
Si intenta dividir el archivo para que quepa en una unidad con formato FAT32,
utilice un límite de bytes de 4294967295. Por ejemplo:
tar cvzf - /Applications/Install macOS Sierra.app/ |
split -b 4294967295 - /Volumes/UNTITLED/install_macos_sierra.tgz.
Cuando desee extraer los archivos, use el siguiente comando (a partir del comentario de @Naftuli Kay):
cat sda1.backup.tar.gz.* | tar xzvf -