Línea de comando 7zip Linux - excluyendo directorios

Línea de comando 7zip Linux - excluyendo directorios

Me gustaría crear un archivo .7z de mi sitio web usando 7zip; Hay algunos directorios que contienen archivos grandes (varios gigabytes) de los que no vale la pena hacer una copia de seguridad, ya que ya tengo copias de seguridad de ellos. Podría especificar hacer una copia de seguridad solo de archivos o directorios específicos, pero estoy planeando crear un script para hacer esto por mí, y sería un poco molesto seguir actualizando el script para incluir nuevos archivos, tipos de archivos y directorios. No puedo encontrar nada en la documentación sobre la exclusión de directorios; sólo archivos. ¿Cuál es la forma más sencilla de hacer esto?

El comando que usé antes (antes de tener que evitar archivos grandes) era simplemente

7z a backup.7z *

hecho en el directorio de trabajo.

Respuesta1

directoryes un tipo de archivo. man 7zNo es fácil de leer pero menciona -x:

-x[r[-|0]]]{@listfile|!wildcard}
         

    Exclude filenames

Supongamos que tenemos el siguiente árbol de directorios:

$ tree
.
├── dir
│   └── file3
├── dir1
│   └── file4
├── file1
└── file2

2 directories, 4 files

y que queremos ignorar diry dir1:

$ 7z a -x'!dir' -x'!dir1' b.7z  *

Después de hacer eso:

$ 7z l b.7z
(...)
   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2018-04-03 22:25:24 ....A            0            0  file1
2018-04-03 22:25:24 ....A            0            0  file2
------------------- ----- ------------ ------------  ------------------------
2018-04-03 22:25:24                  0            0  2 files

Respuesta2

Para mí la sintaxis es ligeramente diferente.

NOW=`date +%Y-%m-%d-%H-%M-%S`
XX=`cat ~aaaaaazzzzzz/.gnupg2/passphrase-symmetric`
7z a                                           \
  -t7z -m0=lzma2 -mx=9 -mfb=64                 \
  -md=32m -ms=on -mhe=on -p${XX}               \
    '-xr!~/Documents/temp/'                    \
    '-xr!~/Documents/Sites/'                   \
    '-xr!**/*.zip'   '-xr!**/*.bz2'         '-xr!**/*.gz'   '-xr!**/*.7z'          \
    '-xr!**/*.pyc'   '-xr!**/__pycache__/**'                 \
    '-xr!**/*.gpkg'  '-xr!**/*.gramp' '-xr!**/*.ged'         \
    '-xr!**/*.log'   '-xr!*/venv/*' '-xr!*.sqlit*'  '-xr!*.bak'  '-xr!*.html~' '-xr!*.html~*'  \
    '-xr!*.vm'  '-xr!*.vmdk'  '-xr!*.vmem'  '-xr!*.vmsd'  '-xr!*.vmss'  '-xr!*.vmx'  '-xr!*.vmxf' \
    '-xr!*.mp4' '-xr!*.msf'                           \
    '-xr!*.htm' '-xr!*.html'                          \
   ${BACKUP_DIR}/data-encrypted/BackUp-${NOW}.7z      \
                    ~/Documents            \
                    ~/.ssh                 \
                    ~/.gnupg2              \
                    ~/.gnupg  

Corro en Linux/Ubuntu

información relacionada