backup: Allow to specify custom temporary directory

Using tmpfs-backed directory may speed up the backup process.

QubesOS/qubes-issues#1652
This commit is contained in:
Marek Marczykowski-Górecki 2016-01-20 03:31:11 +01:00
parent 31a3796ed3
commit d2640b517f
No known key found for this signature in database
GPG Key ID: 063938BA42CFA724
2 changed files with 9 additions and 2 deletions

View File

@ -449,7 +449,8 @@ def prepare_backup_header(target_directory, passphrase, compressed=False,
def backup_do(base_backup_dir, files_to_backup, passphrase, def backup_do(base_backup_dir, files_to_backup, passphrase,
progress_callback=None, encrypted=False, appvm=None, progress_callback=None, encrypted=False, appvm=None,
compressed=False, hmac_algorithm=DEFAULT_HMAC_ALGORITHM, compressed=False, hmac_algorithm=DEFAULT_HMAC_ALGORITHM,
crypto_algorithm=DEFAULT_CRYPTO_ALGORITHM): crypto_algorithm=DEFAULT_CRYPTO_ALGORITHM,
tmpdir="/var/tmp"):
global running_backup_operation global running_backup_operation
def queue_put_with_check(proc, vmproc, queue, element): def queue_put_with_check(proc, vmproc, queue, element):
@ -510,7 +511,7 @@ def backup_do(base_backup_dir, files_to_backup, passphrase,
progress = blocks_backedup * 11 / total_backup_sz progress = blocks_backedup * 11 / total_backup_sz
progress_callback(progress) progress_callback(progress)
backup_tmpdir = tempfile.mkdtemp(prefix="/var/tmp/backup_") backup_tmpdir = tempfile.mkdtemp(prefix="{}/backup_".format(tmpdir))
running_backup_operation.tmpdir_to_remove = backup_tmpdir running_backup_operation.tmpdir_to_remove = backup_tmpdir
# Tar with tape length does not deals well with stdout (close stdout between # Tar with tape length does not deals well with stdout (close stdout between

View File

@ -67,6 +67,10 @@ def main():
dest="compress_filter", default=False, dest="compress_filter", default=False,
help="Compress the backup using specified filter " help="Compress the backup using specified filter "
"program (default: gzip)") "program (default: gzip)")
parser.add_option("--tmpdir", action="store", dest="tmpdir", default=None,
help="Custom temporary directory (if you have at least "
"1GB free RAM in dom0, use of /tmp is advised) ("
"default: /var/tmp)")
parser.add_option ("--debug", action="store_true", dest="debug", parser.add_option ("--debug", action="store_true", dest="debug",
default=False, help="Enable (a lot of) debug output") default=False, help="Enable (a lot of) debug output")
@ -180,6 +184,8 @@ def main():
kwargs['hmac_algorithm'] = options.hmac_algorithm kwargs['hmac_algorithm'] = options.hmac_algorithm
if options.crypto_algorithm: if options.crypto_algorithm:
kwargs['crypto_algorithm'] = options.crypto_algorithm kwargs['crypto_algorithm'] = options.crypto_algorithm
if options.tmpdir:
kwargs['tmpdir'] = options.tmpdir
try: try:
backup_do(base_backup_dir, files_to_backup, passphrase, backup_do(base_backup_dir, files_to_backup, passphrase,