Source code for pyutil.backup_nt_and_posix

#!/usr/bin/env python
"""Backup a directory by appending the date and time and copying over.

===================
Backup NT and Posix
===================

.. highlight:: ipython

.. module:: backup_nt_and_posix

Motivation
----------
This script aims to be platform agnostic and in the long term will be used on
Windows, Linux, Mac and Android systems.

"""
import os
import subprocess
import sys
from time import strftime


[docs]def timestamped_dir(backup_dir, path='.'): r"""Create a backup of a directory. Append date and time to new dir name. .. todo:: Change this so that it utilizes :func:`subprocess.check_call()` so we handle return codes in a better way. Parameters ---------- backup_dir : str Directory to backup path : str, optional Directory to back up to. Defaults to cwd. Returns ------- err_code : int Non-zero value indicates error code, or zero on success. err_msg : str or None Human readable error message, or None on success. """ if os.name == "nt": shell_command = "move" elif os.name == "posix": shell_command = "mv" else: return [-1, "Not supported on %s platform" % os.name] cmd = subprocess.Popen([shell_command, path, backup_dir], shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE) (out, err) = cmd.communicate() if len(err) != 0: return [-1, err] else: os.mkdir(path) return [0, None]
if __name__ == "__main__": args = sys.argv[:] # if len(args) == 2: for directory in args[1:]: path = args[directory] if os.path.exists(path): backup_dir = path + strftime('-%Y-%m-%d-%Hh%Mm%Ss') timestamped_dir(backup_dir)