Mantener directorios bzip2ed en Windows

Mantener directorios bzip2ed en Windows

Tengo una carpeta que, además de otras cosas, tiene carpetas con nombres de fechas, por ejemplo, 20110908 20110909, etc. Todas las noches, me gustaría ejecutar una herramienta que verifique todas las carpetas que coincidan con esa máscara de fecha (podría ser 201*) y bzip2 cualquiera de ellas que aún no tenga un archivo bzip2 con un nombre similar. E idealmente, si después de bzip2 el contenido de la carpeta cambia, me gustaría volver a bzip2.

¿Existe alguna herramienta que pueda ayudarme?

Respuesta1

La versión de línea de comando de7 cremalleraspuede ayudarte aquí. Puede crear un archivo por lotes que programe mediante el Programador de tareas. Debería utilizar el interruptor de actualización "u" de 7-Zip. Un script similar al siguiente podría ser la solución:

for /f %%F IN ('dir /b 201*') (

    REM Extract
    7z e %F.tar.bz2 %F.tar

    REM Update archive
    7z u %F.tar -uq2r2y2z2w2 %F

    REM Compress
    7z a %F.tar.bz2 %F.tar

    REM Delete tar
    del %F.tar

)

Si puede utilizar el formato zip o 7z, puede omitir los pasos de "extraer y luego recomprimir" y simplemente ejecutar el paso de actualización.

Respuesta2

Recurrí al uso de Python con bzip2.exeWindows.

#!/usr/bin/env python
import os
import subprocess

rootdir = "C:/XXX/"
for root, subFolders, files in os.walk(rootdir):
    for file in files:
    filename = os.path.join(root,file)
    if(os.path.splitext(filename)[1] != ".bz2"):
        print("Compressing "+filename+"...")
        process=subprocess.Popen('bzip2.exe %s'%(filename),shell=True)
        process.wait()

información relacionada