This fixes issues #144, #577 and #320.
This update introduces a new options called "symlink-policy" that can be set to "store", "ignore" or "follow".
The default setting "store" means all symlinks are recorded as symlinks and recreated as symlinks on restore. This is chosen as default because it is the best replication of the actual disk contents.
Setting it to "ignore" simply means that no information is recorded about any symlinks.
And lastly, setting it to "follow" reverts to the previous default of treating symlinks as if they are normal files/folders.
Caveat: On Windows, you need Administrator privileges to create symlinks (when restoring), but not for reading them (on backup).
Since this change meant that the file attributes must be read, I also added support for the option "exclude-files-attributes", that can be used to ignore/exclude files with certain attributes, such as "hidden", "archive" or "encrypted".
Since I had to much about so much with getting the symlinks supported on Windows, I also added some extra logic to the Windows file handler, so it can now handle files and folders with up to 32k chars in the path. The logic is done so that the normal System.IO operations are used for paths with less than 260 characters (MAX_PATH), and on error or longer paths, the Win32 Unicode API is invoked. This should give maximal backwards compatibility and still allow backup and restore of files with long paths.
This commit also includes a BlockingQueue implementation that is supposed to make file/folder enumeration faster, but this has not been implemented because Duplicati depends on having a "whole world" view of the files and folders before running the backup (i.e. deeper changes required for this).
git-svn-id: https://duplicati.googlecode.com/svn/trunk@1381 59da171f-624f-0410-aa54-27559c288bec
Not 100% tested, because it is supposed to go away soon, but right now it is the only way to create a new backup.
Also moved database schema and upgrade information/code into the data model project.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@1275 59da171f-624f-0410-aa54-27559c288bec
Strangely enough the error only occurs if the code is compiled with the MS compiler and then executed with Mono.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@1061 59da171f-624f-0410-aa54-27559c288bec
Status: Fixed
The globbing expressions are now saved and used.
This includes the new filter test dialog that generates globbing rather than regexps.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@904 59da171f-624f-0410-aa54-27559c288bec
Now also stores the filename+size of signature/content files to ensure that the parsed filenames match the expected ones.
The filesize and filenames are used to verify that the remote file is complete, without downloading it.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@716 59da171f-624f-0410-aa54-27559c288bec
Status: Fixed
There were some issues with namespaces and signing of the files,
which caused the translations to not load.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@649 59da171f-624f-0410-aa54-27559c288bec
Status: Fixed
Turns out it was a more generic problem than I first assumed.
The problem was that there are two similar controls on the page (the duration editors),
and their internal controls are named the same, so it applied the setting from the top control to the lower,
and the top control was set to "each day".
The other problem "system is slow" is also fixed, although I'm unsure why it happened in the first place.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@630 59da171f-624f-0410-aa54-27559c288bec
Also fixed a bug where the suggested target path shown in the tree was not used, rather the previous \0 and \1 style was used.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@573 59da171f-624f-0410-aa54-27559c288bec
Status: Fixed
It turns out that the "autocheck" feature was also broken because of the sorting.
Now the sorting works for all columns, and the text and autocheck follows the item.
I also added a feature where boolean columns get the value "true" inserted if the checkbox is clicked.
The grid is now sorted by the option name.
I experimented a little with the sorting, and if the "Enabled" column is sorted, things tend to flip around
when checking/unchecking items, so I discarded that idea, and went with sorted by "Name" only.
If desired, the user can sort by clicking the "Enabled" column.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@566 59da171f-624f-0410-aa54-27559c288bec
Status: Fixed
Removed error message when user cancels the file content listing.
Also fixed a similar error in other places where the operation can be canceled.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@546 59da171f-624f-0410-aa54-27559c288bec
Added name support in GUI and commandline version.
When restoring from commandline, subfolders will now be named like the source folders, if only one source folder is given.
When restoring from GUI, the names will be suggested like in the commandline.
It is no longer required that the unused folders exists when restoring a multi-source backup from the GUI.
Added size tooltips to the restore GUI window with the list of backup chains.
Now correctly deletes old signature cache files, even if they use the old names.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@542 59da171f-624f-0410-aa54-27559c288bec
Status: Fixed
The tab order for the mentioned pages is now corrected, except for the generated filename page,
as that page was removed due to issue #210 and r523.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@526 59da171f-624f-0410-aa54-27559c288bec
Fixed a protential race condition with warning messages and file counts (cosmetic only) when using async transfers.
Spelling correction, Seperator -> Separator.
Changed so a restore operation can also supply advanced options.
Changed the format of timestamps in filenames to follow the Duplicity convention, which removes the need for --time-separator and --use-short-filenames.
Moved the URL utility into Core, to avoid compilation errors with Monodevelop.
Reorganized the runner to better support the LiveControls on all operations rather than only for backup/restore.
Update issue #210
Status: Fixed
I have now changed the time format to follow the Duplicity naming convention.
This means that all filenames are now generated with the time set as "yyyyMMddTHHmmssZ".
This format is more portable across all platforms, and easily sortable/readable.
The drawback is that the Z indicates UTC time, so if one looks at the filenames,
the times are not local. The motivation for this is to avoid trouble
with daylight savings time offsets.
There is full backwards compatibility as long as backups have not used more than
one character for --time-separator (only possible via commandline).
This new format means that the options --time-separator and --use-short-filenames
are now deprecated and removed from the user interface. It is possible to
access them from the advanced options page, along with the --use-old-filenames option.
If anyone needs these options for some reason, let me know, otherwise they will be removed
in a later version.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@523 59da171f-624f-0410-aa54-27559c288bec
Status: Fixed
I have now put in the textbox with a scrollbar instead,
so the long texts can be viewed too.
I also added the display of valid values for the options that report it.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@489 59da171f-624f-0410-aa54-27559c288bec
This was based on the idea that the interfaces should remain static.
I hope this change is enough to ensure stable interfaces until release 1.2.
Overview of changes:
Moved all interfaces into the same dll.
Encryption and compression is now plugable modules, just as the backends.
Encryption/compression can now register an UI.
Encryption now uses AESCrypt as a default.
GPG does not default to using the --armor option.
Added support for generic modules, but none are written yet.
Added support for plugable settings pages in the "Options" dialog.
Fixed issue #148.
Duplicati now uses AESCrypt as the default encryption format.
Fixed issue #199.
GPG now supports custom commandline options.
Fixed issue #207.
Encryption modules are now plugable.
Fixed issue #118.
S3 credentials are now stored.
Fixed issue #151.
Backends can now register system wide options.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@427 59da171f-624f-0410-aa54-27559c288bec
There was a bug in the filter evaluator, which is now fixed.
It meant that .* matched everythin, including the source folder.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@389 59da171f-624f-0410-aa54-27559c288bec
Added better progress text when restoring.
Added progress reporting when restoring.
Added progress bar for download, if the backend supports reporting sizes.
Also contains a fix for issue #143.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@334 59da171f-624f-0410-aa54-27559c288bec
Fixed issue #69.
Fixed issue #142.
I finally got the time to complete the pause and throttle options.
It required a minor rewrite, so I also fixed issue #142.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@310 59da171f-624f-0410-aa54-27559c288bec
Fixed issue #42.
Added tooltips to many items to explain the icons.
The EnumerateFileSystemEntries call now uses a callback method, which reduces the need for storing a temporary filelist in memory when it's not needed.
Fixed a display progress updating bug where the progressbar would jump.
Fixed a bug where the file timestamp checking was disabled by default.
Reduced the number of default retries for cleanup.
git-svn-id: https://duplicati.googlecode.com/svn/trunk@138 59da171f-624f-0410-aa54-27559c288bec