-
Notifications
You must be signed in to change notification settings - Fork 0
/
BACKUP.txt
62 lines (45 loc) · 3.66 KB
/
BACKUP.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Incremental Backup Utility - Backup Creation Command
Introduction
This command is used to create new incremental backups.
Usage
IncrementalBackup.exe backup <source_dir> <target_dir> [<exclude_path1> <exclude_path2> ...]
<source_dir> - The path of the directory to be backed up. May be at least any locally mapped drive (I'm not sure
how other path types like UNC would work, I haven't tested). If relative, it's taken to be relative to the current
directory.
<target_dir> - The path of the directory to back up to. Same conditions as <source_dir> apply. It's highly
recommended that <target_dir> is not contained within <source_dir> (except if you explicitly exclude <target_dir>).
<exclude_path> - 0 or more paths which will never be backed up. If relative paths, they are relative to source_dir.
Theory of Operation
The premise of this command is for it to be run regularly with the same target directory. Backups will be
accumulated in the target directory, which are read during the next backup to determine which files to copy (hence
"incremental" backup). This model allows use of the application without any installation or data stored elsewhere
on the system.
Multiple source directories may be used with the same target directory. When performing a backup, the application
will only read previous backups for the same source directory.
Determining if a file should be copied is based on the last write time metadata. The program will check for the
latest previous backup which contains the file. If the file has been modified since that backup, the file is
copied, otherwise it is not copied. (If there are no previous backups, all files are copied.)
Note that if you mess with files' last write times, or mess with the system clock, or your timezone is
particularly strange, this application may not work as expected.
Note that matching of paths is done literally and is case insensitive. "Literally" meaning that path aliasing (for
example symbolic links) is probably not handled. The case insensitivity is because Windows uses case insensitive
paths.
This applies to matching previous backups based on the source directory, and for matching excluded paths.
Please see the "BACKUP_SPECS.txt" file for specific technical information on how the backups are stored.
Process Return Codes
0 - Backup completed successfully, and no directories or files were skipped due to errors.
1 - The backup completed successfully, but some directories or files were skipped, or backup metadata could not be
written, due to filesystem errors.
2 - The command line arguments are invalid.
3 - The backup was aborted due to a runtime error, no files were backed up.
4 - The backup was aborted due to a programmer error (sorry in advance).
Error Handling
Since this application performs a lot of file operations, there are many oppurtunities for unavoidable errors to
occur. In general, this command tries to back up as much of the source directory as possible, even when errors
occur.
If a directory or file can't be read, it will simply be skipped (this will be logged to the console).
In very few cases an error may occur that prevents the backup from continuing. In such cases, large amounts of
files may be skipped (which will also be logged to the console).
The command is designed to fail securely. In almost all error cases, the backup shall remain in a consistent,
albeit perhaps incomplete, state. In the worst error case, some files will be backed up, but metadata for the
backup won't be written, so the backup won't be used during the next backup.