diff --git a/Duplicati.sln b/Duplicati.sln
index ccad5ba26..1234fd385 100644
--- a/Duplicati.sln
+++ b/Duplicati.sln
@@ -63,289 +63,159 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Server.Serializat
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.GUI.MacTrayIcon", "Duplicati\GUI\Duplicati.GUI.MacTrayIcon\Duplicati.GUI.MacTrayIcon.csproj", "{9E9675C7-1198-44CD-85E0-FD582E9EEAFF}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.CommandLine.BackendTool", "Duplicati\CommandLine\BackendTool\Duplicati.CommandLine.BackendTool.csproj", "{2AF960C0-357D-4D44-A3D5-8B6E89DB0F11}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
- Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
- Release|x86 = Release|x86
- Debug|X86 = Debug|X86
- Release|X86 = Release|X86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Debug|x86.ActiveCfg = Debug|x86
- {0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Debug|x86.Build.0 = Debug|x86
{0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Release|Any CPU.Build.0 = Release|Any CPU
- {0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Release|x86.ActiveCfg = Release|x86
- {0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Release|x86.Build.0 = Release|x86
{10D2D1B7-C664-41D8-9B3A-00040C3D421B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{10D2D1B7-C664-41D8-9B3A-00040C3D421B}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {10D2D1B7-C664-41D8-9B3A-00040C3D421B}.Debug|x86.ActiveCfg = Debug|x86
- {10D2D1B7-C664-41D8-9B3A-00040C3D421B}.Debug|x86.Build.0 = Debug|x86
{10D2D1B7-C664-41D8-9B3A-00040C3D421B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{10D2D1B7-C664-41D8-9B3A-00040C3D421B}.Release|Any CPU.Build.0 = Release|Any CPU
- {10D2D1B7-C664-41D8-9B3A-00040C3D421B}.Release|x86.ActiveCfg = Release|x86
- {10D2D1B7-C664-41D8-9B3A-00040C3D421B}.Release|x86.Build.0 = Release|x86
{1470F75F-D364-4010-91D0-FD4DDA1C5159}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1470F75F-D364-4010-91D0-FD4DDA1C5159}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1470F75F-D364-4010-91D0-FD4DDA1C5159}.Debug|x86.ActiveCfg = Debug|x86
- {1470F75F-D364-4010-91D0-FD4DDA1C5159}.Debug|x86.Build.0 = Debug|x86
{1470F75F-D364-4010-91D0-FD4DDA1C5159}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1470F75F-D364-4010-91D0-FD4DDA1C5159}.Release|Any CPU.Build.0 = Release|Any CPU
- {1470F75F-D364-4010-91D0-FD4DDA1C5159}.Release|x86.ActiveCfg = Release|x86
- {1470F75F-D364-4010-91D0-FD4DDA1C5159}.Release|x86.Build.0 = Release|x86
{17566860-3D98-4604-AA5B-47661F75609F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{17566860-3D98-4604-AA5B-47661F75609F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {17566860-3D98-4604-AA5B-47661F75609F}.Debug|x86.ActiveCfg = Debug|x86
- {17566860-3D98-4604-AA5B-47661F75609F}.Debug|x86.Build.0 = Debug|x86
{17566860-3D98-4604-AA5B-47661F75609F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{17566860-3D98-4604-AA5B-47661F75609F}.Release|Any CPU.Build.0 = Release|Any CPU
- {17566860-3D98-4604-AA5B-47661F75609F}.Release|x86.ActiveCfg = Release|x86
- {17566860-3D98-4604-AA5B-47661F75609F}.Release|x86.Build.0 = Release|x86
{19E661D2-C5DA-4F35-B3EE-7586E5734B5F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{19E661D2-C5DA-4F35-B3EE-7586E5734B5F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {19E661D2-C5DA-4F35-B3EE-7586E5734B5F}.Debug|x86.ActiveCfg = Debug|x86
- {19E661D2-C5DA-4F35-B3EE-7586E5734B5F}.Debug|x86.Build.0 = Debug|x86
{19E661D2-C5DA-4F35-B3EE-7586E5734B5F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{19E661D2-C5DA-4F35-B3EE-7586E5734B5F}.Release|Any CPU.Build.0 = Release|Any CPU
- {19E661D2-C5DA-4F35-B3EE-7586E5734B5F}.Release|x86.ActiveCfg = Release|x86
- {19E661D2-C5DA-4F35-B3EE-7586E5734B5F}.Release|x86.Build.0 = Release|x86
{19ECCE09-B5EB-406C-8C57-BAC66997D469}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{19ECCE09-B5EB-406C-8C57-BAC66997D469}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {19ECCE09-B5EB-406C-8C57-BAC66997D469}.Debug|x86.ActiveCfg = Debug|x86
- {19ECCE09-B5EB-406C-8C57-BAC66997D469}.Debug|x86.Build.0 = Debug|x86
{19ECCE09-B5EB-406C-8C57-BAC66997D469}.Release|Any CPU.ActiveCfg = Release|Any CPU
{19ECCE09-B5EB-406C-8C57-BAC66997D469}.Release|Any CPU.Build.0 = Release|Any CPU
- {19ECCE09-B5EB-406C-8C57-BAC66997D469}.Release|x86.ActiveCfg = Release|x86
- {19ECCE09-B5EB-406C-8C57-BAC66997D469}.Release|x86.Build.0 = Release|x86
{1BFAE226-8364-4086-825C-BB83F6F3EE4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1BFAE226-8364-4086-825C-BB83F6F3EE4C}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1BFAE226-8364-4086-825C-BB83F6F3EE4C}.Debug|x86.ActiveCfg = Debug|x86
- {1BFAE226-8364-4086-825C-BB83F6F3EE4C}.Debug|x86.Build.0 = Debug|x86
{1BFAE226-8364-4086-825C-BB83F6F3EE4C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1BFAE226-8364-4086-825C-BB83F6F3EE4C}.Release|Any CPU.Build.0 = Release|Any CPU
- {1BFAE226-8364-4086-825C-BB83F6F3EE4C}.Release|x86.ActiveCfg = Release|x86
- {1BFAE226-8364-4086-825C-BB83F6F3EE4C}.Release|x86.Build.0 = Release|x86
+ {2AF960C0-357D-4D44-A3D5-8B6E89DB0F11}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2AF960C0-357D-4D44-A3D5-8B6E89DB0F11}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2AF960C0-357D-4D44-A3D5-8B6E89DB0F11}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2AF960C0-357D-4D44-A3D5-8B6E89DB0F11}.Release|Any CPU.Build.0 = Release|Any CPU
{33FD1D24-C28F-4C71-933F-98F1586EA76C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{33FD1D24-C28F-4C71-933F-98F1586EA76C}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {33FD1D24-C28F-4C71-933F-98F1586EA76C}.Debug|x86.ActiveCfg = Debug|x86
- {33FD1D24-C28F-4C71-933F-98F1586EA76C}.Debug|x86.Build.0 = Debug|x86
{33FD1D24-C28F-4C71-933F-98F1586EA76C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{33FD1D24-C28F-4C71-933F-98F1586EA76C}.Release|Any CPU.Build.0 = Release|Any CPU
- {33FD1D24-C28F-4C71-933F-98F1586EA76C}.Release|x86.ActiveCfg = Release|x86
- {33FD1D24-C28F-4C71-933F-98F1586EA76C}.Release|x86.Build.0 = Release|x86
{42C91180-11EB-4590-82EA-80FE9D4DEBEC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{42C91180-11EB-4590-82EA-80FE9D4DEBEC}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {42C91180-11EB-4590-82EA-80FE9D4DEBEC}.Debug|x86.ActiveCfg = Debug|Any CPU
- {42C91180-11EB-4590-82EA-80FE9D4DEBEC}.Debug|x86.Build.0 = Debug|Any CPU
{42C91180-11EB-4590-82EA-80FE9D4DEBEC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{42C91180-11EB-4590-82EA-80FE9D4DEBEC}.Release|Any CPU.Build.0 = Release|Any CPU
- {42C91180-11EB-4590-82EA-80FE9D4DEBEC}.Release|x86.ActiveCfg = Release|Any CPU
{47FE73E1-0832-44F7-96B9-2580273206C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{47FE73E1-0832-44F7-96B9-2580273206C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {47FE73E1-0832-44F7-96B9-2580273206C3}.Debug|x86.ActiveCfg = Debug|x86
- {47FE73E1-0832-44F7-96B9-2580273206C3}.Debug|x86.Build.0 = Debug|x86
{47FE73E1-0832-44F7-96B9-2580273206C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{47FE73E1-0832-44F7-96B9-2580273206C3}.Release|Any CPU.Build.0 = Release|Any CPU
- {47FE73E1-0832-44F7-96B9-2580273206C3}.Release|x86.ActiveCfg = Release|x86
- {47FE73E1-0832-44F7-96B9-2580273206C3}.Release|x86.Build.0 = Release|x86
{4D012CB1-4B92-47F4-89B7-BF80A73A2E99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4D012CB1-4B92-47F4-89B7-BF80A73A2E99}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {4D012CB1-4B92-47F4-89B7-BF80A73A2E99}.Debug|x86.ActiveCfg = Debug|x86
- {4D012CB1-4B92-47F4-89B7-BF80A73A2E99}.Debug|x86.Build.0 = Debug|x86
{4D012CB1-4B92-47F4-89B7-BF80A73A2E99}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4D012CB1-4B92-47F4-89B7-BF80A73A2E99}.Release|Any CPU.Build.0 = Release|Any CPU
- {4D012CB1-4B92-47F4-89B7-BF80A73A2E99}.Release|x86.ActiveCfg = Release|x86
- {4D012CB1-4B92-47F4-89B7-BF80A73A2E99}.Release|x86.Build.0 = Release|x86
{52826615-7964-47FE-B4B3-1B2DBDF605B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{52826615-7964-47FE-B4B3-1B2DBDF605B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {52826615-7964-47FE-B4B3-1B2DBDF605B9}.Debug|x86.ActiveCfg = Debug|x86
- {52826615-7964-47FE-B4B3-1B2DBDF605B9}.Debug|x86.Build.0 = Debug|x86
{52826615-7964-47FE-B4B3-1B2DBDF605B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{52826615-7964-47FE-B4B3-1B2DBDF605B9}.Release|Any CPU.Build.0 = Release|Any CPU
- {52826615-7964-47FE-B4B3-1B2DBDF605B9}.Release|x86.ActiveCfg = Release|x86
- {52826615-7964-47FE-B4B3-1B2DBDF605B9}.Release|x86.Build.0 = Release|x86
{7886BA79-A38A-4288-8B8A-9F29D0E15AC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7886BA79-A38A-4288-8B8A-9F29D0E15AC0}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {7886BA79-A38A-4288-8B8A-9F29D0E15AC0}.Debug|x86.ActiveCfg = Debug|x86
- {7886BA79-A38A-4288-8B8A-9F29D0E15AC0}.Debug|x86.Build.0 = Debug|x86
{7886BA79-A38A-4288-8B8A-9F29D0E15AC0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7886BA79-A38A-4288-8B8A-9F29D0E15AC0}.Release|Any CPU.Build.0 = Release|Any CPU
- {7886BA79-A38A-4288-8B8A-9F29D0E15AC0}.Release|x86.ActiveCfg = Release|x86
- {7886BA79-A38A-4288-8B8A-9F29D0E15AC0}.Release|x86.Build.0 = Release|x86
{81765A64-3661-4E3E-B850-2F6F87A51F74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{81765A64-3661-4E3E-B850-2F6F87A51F74}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {81765A64-3661-4E3E-B850-2F6F87A51F74}.Debug|x86.ActiveCfg = Debug|x86
- {81765A64-3661-4E3E-B850-2F6F87A51F74}.Debug|x86.Build.0 = Debug|x86
{81765A64-3661-4E3E-B850-2F6F87A51F74}.Release|Any CPU.ActiveCfg = Release|Any CPU
{81765A64-3661-4E3E-B850-2F6F87A51F74}.Release|Any CPU.Build.0 = Release|Any CPU
- {81765A64-3661-4E3E-B850-2F6F87A51F74}.Release|x86.ActiveCfg = Release|x86
- {81765A64-3661-4E3E-B850-2F6F87A51F74}.Release|x86.Build.0 = Release|x86
{94484FDB-2EFA-4CF0-9BE6-A561157B4F87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{94484FDB-2EFA-4CF0-9BE6-A561157B4F87}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {94484FDB-2EFA-4CF0-9BE6-A561157B4F87}.Debug|x86.ActiveCfg = Debug|x86
- {94484FDB-2EFA-4CF0-9BE6-A561157B4F87}.Debug|x86.Build.0 = Debug|x86
{94484FDB-2EFA-4CF0-9BE6-A561157B4F87}.Release|Any CPU.ActiveCfg = Release|Any CPU
{94484FDB-2EFA-4CF0-9BE6-A561157B4F87}.Release|Any CPU.Build.0 = Release|Any CPU
- {94484FDB-2EFA-4CF0-9BE6-A561157B4F87}.Release|x86.ActiveCfg = Release|x86
- {94484FDB-2EFA-4CF0-9BE6-A561157B4F87}.Release|x86.Build.0 = Release|x86
{9E9675C7-1198-44CD-85E0-FD582E9EEAFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9E9675C7-1198-44CD-85E0-FD582E9EEAFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {9E9675C7-1198-44CD-85E0-FD582E9EEAFF}.Debug|x86.ActiveCfg = Debug|x86
- {9E9675C7-1198-44CD-85E0-FD582E9EEAFF}.Debug|X86.ActiveCfg = Debug|X86
- {9E9675C7-1198-44CD-85E0-FD582E9EEAFF}.Debug|x86.Build.0 = Debug|x86
- {9E9675C7-1198-44CD-85E0-FD582E9EEAFF}.Debug|X86.Build.0 = Debug|X86
{9E9675C7-1198-44CD-85E0-FD582E9EEAFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9E9675C7-1198-44CD-85E0-FD582E9EEAFF}.Release|Any CPU.Build.0 = Release|Any CPU
- {9E9675C7-1198-44CD-85E0-FD582E9EEAFF}.Release|X86.ActiveCfg = Release|X86
- {9E9675C7-1198-44CD-85E0-FD582E9EEAFF}.Release|x86.ActiveCfg = Release|x86
- {9E9675C7-1198-44CD-85E0-FD582E9EEAFF}.Release|x86.Build.0 = Release|x86
- {9E9675C7-1198-44CD-85E0-FD582E9EEAFF}.Release|X86.Build.0 = Release|X86
{B60D0993-B0C5-457A-90D9-DB6EEB33CE47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B60D0993-B0C5-457A-90D9-DB6EEB33CE47}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B60D0993-B0C5-457A-90D9-DB6EEB33CE47}.Debug|x86.ActiveCfg = Debug|x86
- {B60D0993-B0C5-457A-90D9-DB6EEB33CE47}.Debug|x86.Build.0 = Debug|x86
{B60D0993-B0C5-457A-90D9-DB6EEB33CE47}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B60D0993-B0C5-457A-90D9-DB6EEB33CE47}.Release|Any CPU.Build.0 = Release|Any CPU
- {B60D0993-B0C5-457A-90D9-DB6EEB33CE47}.Release|x86.ActiveCfg = Release|x86
- {B60D0993-B0C5-457A-90D9-DB6EEB33CE47}.Release|x86.Build.0 = Release|x86
{BAE27510-8B5D-44B2-B33E-372A98908041}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BAE27510-8B5D-44B2-B33E-372A98908041}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {BAE27510-8B5D-44B2-B33E-372A98908041}.Debug|x86.ActiveCfg = Debug|x86
- {BAE27510-8B5D-44B2-B33E-372A98908041}.Debug|x86.Build.0 = Debug|x86
{BAE27510-8B5D-44B2-B33E-372A98908041}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BAE27510-8B5D-44B2-B33E-372A98908041}.Release|Any CPU.Build.0 = Release|Any CPU
- {BAE27510-8B5D-44B2-B33E-372A98908041}.Release|x86.ActiveCfg = Release|x86
- {BAE27510-8B5D-44B2-B33E-372A98908041}.Release|x86.Build.0 = Release|x86
{C0270709-2A40-43B5-8CF1-69581B9FA2A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C0270709-2A40-43B5-8CF1-69581B9FA2A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C0270709-2A40-43B5-8CF1-69581B9FA2A1}.Debug|x86.ActiveCfg = Debug|x86
- {C0270709-2A40-43B5-8CF1-69581B9FA2A1}.Debug|x86.Build.0 = Debug|x86
{C0270709-2A40-43B5-8CF1-69581B9FA2A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C0270709-2A40-43B5-8CF1-69581B9FA2A1}.Release|Any CPU.Build.0 = Release|Any CPU
- {C0270709-2A40-43B5-8CF1-69581B9FA2A1}.Release|x86.ActiveCfg = Release|x86
- {C0270709-2A40-43B5-8CF1-69581B9FA2A1}.Release|x86.Build.0 = Release|x86
{C03F6DFD-805A-4BE0-9338-64870ADDB4A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C03F6DFD-805A-4BE0-9338-64870ADDB4A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C03F6DFD-805A-4BE0-9338-64870ADDB4A2}.Debug|x86.ActiveCfg = Debug|x86
- {C03F6DFD-805A-4BE0-9338-64870ADDB4A2}.Debug|x86.Build.0 = Debug|x86
{C03F6DFD-805A-4BE0-9338-64870ADDB4A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C03F6DFD-805A-4BE0-9338-64870ADDB4A2}.Release|Any CPU.Build.0 = Release|Any CPU
- {C03F6DFD-805A-4BE0-9338-64870ADDB4A2}.Release|x86.ActiveCfg = Release|x86
- {C03F6DFD-805A-4BE0-9338-64870ADDB4A2}.Release|x86.Build.0 = Release|x86
{C5899F45-B0FF-483C-9D38-24A9FCAAB237}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C5899F45-B0FF-483C-9D38-24A9FCAAB237}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C5899F45-B0FF-483C-9D38-24A9FCAAB237}.Debug|x86.ActiveCfg = Debug|x86
- {C5899F45-B0FF-483C-9D38-24A9FCAAB237}.Debug|x86.Build.0 = Debug|x86
{C5899F45-B0FF-483C-9D38-24A9FCAAB237}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C5899F45-B0FF-483C-9D38-24A9FCAAB237}.Release|Any CPU.Build.0 = Release|Any CPU
- {C5899F45-B0FF-483C-9D38-24A9FCAAB237}.Release|x86.ActiveCfg = Release|x86
- {C5899F45-B0FF-483C-9D38-24A9FCAAB237}.Release|x86.Build.0 = Release|x86
{CCD76347-7DC7-4B42-B7E1-E500E624CAC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CCD76347-7DC7-4B42-B7E1-E500E624CAC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {CCD76347-7DC7-4B42-B7E1-E500E624CAC3}.Debug|x86.ActiveCfg = Debug|Any CPU
- {CCD76347-7DC7-4B42-B7E1-E500E624CAC3}.Debug|x86.Build.0 = Debug|Any CPU
{CCD76347-7DC7-4B42-B7E1-E500E624CAC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CCD76347-7DC7-4B42-B7E1-E500E624CAC3}.Release|Any CPU.Build.0 = Release|Any CPU
- {CCD76347-7DC7-4B42-B7E1-E500E624CAC3}.Release|x86.ActiveCfg = Release|Any CPU
{D10A5FC0-11B4-4E70-86AA-8AEA52BD9798}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D10A5FC0-11B4-4E70-86AA-8AEA52BD9798}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {D10A5FC0-11B4-4E70-86AA-8AEA52BD9798}.Debug|x86.ActiveCfg = Debug|x86
- {D10A5FC0-11B4-4E70-86AA-8AEA52BD9798}.Debug|x86.Build.0 = Debug|x86
{D10A5FC0-11B4-4E70-86AA-8AEA52BD9798}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D10A5FC0-11B4-4E70-86AA-8AEA52BD9798}.Release|Any CPU.Build.0 = Release|Any CPU
- {D10A5FC0-11B4-4E70-86AA-8AEA52BD9798}.Release|x86.ActiveCfg = Release|x86
- {D10A5FC0-11B4-4E70-86AA-8AEA52BD9798}.Release|x86.Build.0 = Release|x86
{D63E53E4-A458-4C2F-914D-92F715F58ACE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D63E53E4-A458-4C2F-914D-92F715F58ACE}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {D63E53E4-A458-4C2F-914D-92F715F58ACE}.Debug|x86.ActiveCfg = Debug|x86
- {D63E53E4-A458-4C2F-914D-92F715F58ACE}.Debug|x86.Build.0 = Debug|x86
{D63E53E4-A458-4C2F-914D-92F715F58ACE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D63E53E4-A458-4C2F-914D-92F715F58ACE}.Release|Any CPU.Build.0 = Release|Any CPU
- {D63E53E4-A458-4C2F-914D-92F715F58ACE}.Release|x86.ActiveCfg = Release|x86
- {D63E53E4-A458-4C2F-914D-92F715F58ACE}.Release|x86.Build.0 = Release|x86
{DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Debug|x86.ActiveCfg = Debug|x86
- {DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Debug|x86.Build.0 = Debug|x86
{DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Release|Any CPU.Build.0 = Release|Any CPU
- {DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Release|x86.ActiveCfg = Release|x86
- {DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}.Release|x86.Build.0 = Release|x86
{E2AF781D-D1E1-4512-BF2C-D6DA8D0F797F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E2AF781D-D1E1-4512-BF2C-D6DA8D0F797F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E2AF781D-D1E1-4512-BF2C-D6DA8D0F797F}.Debug|x86.ActiveCfg = Debug|x86
- {E2AF781D-D1E1-4512-BF2C-D6DA8D0F797F}.Debug|x86.Build.0 = Debug|x86
{E2AF781D-D1E1-4512-BF2C-D6DA8D0F797F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E2AF781D-D1E1-4512-BF2C-D6DA8D0F797F}.Release|Any CPU.Build.0 = Release|Any CPU
- {E2AF781D-D1E1-4512-BF2C-D6DA8D0F797F}.Release|x86.ActiveCfg = Release|x86
- {E2AF781D-D1E1-4512-BF2C-D6DA8D0F797F}.Release|x86.Build.0 = Release|x86
{E7280DCA-7776-4A73-B9B5-41FD77FC8799}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E7280DCA-7776-4A73-B9B5-41FD77FC8799}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E7280DCA-7776-4A73-B9B5-41FD77FC8799}.Debug|x86.ActiveCfg = Debug|x86
- {E7280DCA-7776-4A73-B9B5-41FD77FC8799}.Debug|x86.Build.0 = Debug|x86
{E7280DCA-7776-4A73-B9B5-41FD77FC8799}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E7280DCA-7776-4A73-B9B5-41FD77FC8799}.Release|Any CPU.Build.0 = Release|Any CPU
- {E7280DCA-7776-4A73-B9B5-41FD77FC8799}.Release|x86.ActiveCfg = Release|x86
- {E7280DCA-7776-4A73-B9B5-41FD77FC8799}.Release|x86.Build.0 = Release|x86
{F2854848-BF78-4A6D-9A2A-2AE2AFB70DF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F2854848-BF78-4A6D-9A2A-2AE2AFB70DF1}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {F2854848-BF78-4A6D-9A2A-2AE2AFB70DF1}.Debug|x86.ActiveCfg = Debug|x86
- {F2854848-BF78-4A6D-9A2A-2AE2AFB70DF1}.Debug|x86.Build.0 = Debug|x86
{F2854848-BF78-4A6D-9A2A-2AE2AFB70DF1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F2854848-BF78-4A6D-9A2A-2AE2AFB70DF1}.Release|Any CPU.Build.0 = Release|Any CPU
- {F2854848-BF78-4A6D-9A2A-2AE2AFB70DF1}.Release|x86.ActiveCfg = Release|x86
- {F2854848-BF78-4A6D-9A2A-2AE2AFB70DF1}.Release|x86.Build.0 = Release|x86
{F61679A9-E5DE-468A-B5A4-05F92D0143D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F61679A9-E5DE-468A-B5A4-05F92D0143D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {F61679A9-E5DE-468A-B5A4-05F92D0143D2}.Debug|x86.ActiveCfg = Debug|x86
- {F61679A9-E5DE-468A-B5A4-05F92D0143D2}.Debug|x86.Build.0 = Debug|x86
{F61679A9-E5DE-468A-B5A4-05F92D0143D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F61679A9-E5DE-468A-B5A4-05F92D0143D2}.Release|Any CPU.Build.0 = Release|Any CPU
- {F61679A9-E5DE-468A-B5A4-05F92D0143D2}.Release|x86.ActiveCfg = Release|x86
- {F61679A9-E5DE-468A-B5A4-05F92D0143D2}.Release|x86.Build.0 = Release|x86
{FC9B7611-836F-4127-8B44-A7C31F506807}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FC9B7611-836F-4127-8B44-A7C31F506807}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {FC9B7611-836F-4127-8B44-A7C31F506807}.Debug|x86.ActiveCfg = Debug|x86
- {FC9B7611-836F-4127-8B44-A7C31F506807}.Debug|x86.Build.0 = Debug|x86
{FC9B7611-836F-4127-8B44-A7C31F506807}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FC9B7611-836F-4127-8B44-A7C31F506807}.Release|Any CPU.Build.0 = Release|Any CPU
- {FC9B7611-836F-4127-8B44-A7C31F506807}.Release|x86.ActiveCfg = Release|x86
- {FC9B7611-836F-4127-8B44-A7C31F506807}.Release|x86.Build.0 = Release|x86
{FF2BF37C-E502-4C98-BEA0-701671DDFA08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FF2BF37C-E502-4C98-BEA0-701671DDFA08}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {FF2BF37C-E502-4C98-BEA0-701671DDFA08}.Debug|x86.ActiveCfg = Debug|x86
- {FF2BF37C-E502-4C98-BEA0-701671DDFA08}.Debug|x86.Build.0 = Debug|x86
{FF2BF37C-E502-4C98-BEA0-701671DDFA08}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FF2BF37C-E502-4C98-BEA0-701671DDFA08}.Release|Any CPU.Build.0 = Release|Any CPU
- {FF2BF37C-E502-4C98-BEA0-701671DDFA08}.Release|x86.ActiveCfg = Release|x86
- {FF2BF37C-E502-4C98-BEA0-701671DDFA08}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(MonoDevelopProperties) = preSolution
- StartupItem = Duplicati\CommandLine\Duplicati.CommandLine.csproj
+ StartupItem = Duplicati\CommandLine\BackendTool\Duplicati.CommandLine.BackendTool.csproj
Policies = $0
$0.StandardHeader = $1
- $1.Text = @ Copyright (C) 2013, The Duplicati Team\r\n http://www.duplicati.com, opensource@duplicati.com\n \n This library is free software; you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as\n published by the Free Software Foundation; either version 2.1 of the\n License, or (at your option) any later version.\n\n This library is distributed in the hope that it will be useful, but\n WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public\n License along with this library; if not, write to the Free Software\n Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ $1.Text = @ Copyright (C) 2011, Kenneth Skovhede\r\n http://www.hexad.dk, opensource@hexad.dk\n \n This library is free software; you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as\n published by the Free Software Foundation; either version 2.1 of the\n License, or (at your option) any later version.\n\n This library is distributed in the hope that it will be useful, but\n WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public\n License along with this library; if not, write to the Free Software\n Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
$1.IncludeInNewFiles = True
$0.DotNetNamingPolicy = $2
- $2.DirectoryNamespaceAssociation = PrefixedHierarchical
+ $2.DirectoryNamespaceAssociation = None
$2.ResourceNamePolicy = FileFormatDefault
$0.TextStylePolicy = $3
- $3.inheritsSet = null
+ $3.FileWidth = 120
+ $3.EolMarker = Windows
+ $3.inheritsSet = VisualStudio
+ $3.inheritsScope = text/plain
$3.scope = text/x-csharp
$0.CSharpFormattingPolicy = $4
- $4.IndentSwitchBody = True
- $4.AnonymousMethodBraceStyle = NextLine
- $4.EventBraceStyle = NextLine
- $4.StatementBraceStyle = NextLine
- $4.ElseNewLinePlacement = NewLine
- $4.ElseIfNewLinePlacement = SameLine
- $4.CatchNewLinePlacement = NewLine
- $4.FinallyNewLinePlacement = NewLine
- $4.BeforeMethodDeclarationParentheses = False
$4.BeforeMethodCallParentheses = False
$4.BeforeConstructorDeclarationParentheses = False
$4.BeforeIndexerDeclarationBracket = False
@@ -355,13 +225,6 @@ Global
$4.inheritsSet = Mono
$4.inheritsScope = text/x-csharp
$4.scope = text/x-csharp
- $0.TextStylePolicy = $5
- $5.FileWidth = 120
- $5.TabsToSpaces = False
- $5.EolMarker = Windows
- $5.inheritsSet = VisualStudio
- $5.inheritsScope = text/plain
- $5.scope = text/plain
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Duplicati/CommandLine/BackendTester/Duplicati.CommandLine.BackendTester.csproj b/Duplicati/CommandLine/BackendTester/Duplicati.CommandLine.BackendTester.csproj
index 2c79ac2be..459a4a053 100644
--- a/Duplicati/CommandLine/BackendTester/Duplicati.CommandLine.BackendTester.csproj
+++ b/Duplicati/CommandLine/BackendTester/Duplicati.CommandLine.BackendTester.csproj
@@ -15,46 +15,25 @@
3.5
+ true
+ Duplicati.snk
- True
+ true
full
- False
+ false
bin\Debug\
DEBUG;TRACE
prompt
4
- True
- Duplicati.snk
pdbonly
- True
+ true
bin\Release\
TRACE
prompt
4
- True
- Duplicati.snk
-
-
- True
- bin\x86\Debug\
- DEBUG;TRACE
- full
- x86
- prompt
- 4
- False
-
-
- bin\x86\Release\
- TRACE
- True
- pdbonly
- x86
- prompt
- 4
diff --git a/Duplicati/CommandLine/BackendTool/Duplicati.CommandLine.BackendTool.csproj b/Duplicati/CommandLine/BackendTool/Duplicati.CommandLine.BackendTool.csproj
new file mode 100644
index 000000000..eedf3f25e
--- /dev/null
+++ b/Duplicati/CommandLine/BackendTool/Duplicati.CommandLine.BackendTool.csproj
@@ -0,0 +1,91 @@
+
+
+
+ Debug
+ AnyCPU
+ 10.0.0
+ 2.0
+ {2AF960C0-357D-4D44-A3D5-8B6E89DB0F11}
+ Exe
+ Duplicati.CommandLine.BackendTool
+ Duplicati.CommandLine.BackendTool
+ true
+ ..\Duplicati.snk
+
+
+ true
+ full
+ false
+ bin\Debug
+ DEBUG;
+ prompt
+ 4
+ true
+
+
+ none
+ true
+ bin\Release
+ prompt
+ 4
+ true
+
+
+
+
+
+
+
+
+
+
+
+ {1BFAE226-8364-4086-825C-BB83F6F3EE4C}
+ Duplicati.Library.Backend.CloudFiles
+
+
+ {FC9B7611-836F-4127-8B44-A7C31F506807}
+ Duplicati.Library.Backend.File
+
+
+ {F61679A9-E5DE-468A-B5A4-05F92D0143D2}
+ Duplicati.Library.Backend.FTP
+
+
+ {42C91180-11EB-4590-82EA-80FE9D4DEBEC}
+ Duplicati.Library.Backend.GoogleDocs
+
+
+ {C03F6DFD-805A-4BE0-9338-64870ADDB4A2}
+ Duplicati.Library.Backend.S3
+
+
+ {CCD76347-7DC7-4B42-B7E1-E500E624CAC3}
+ Duplicati.Library.Backend.SkyDrive
+
+
+ {FF2BF37C-E502-4C98-BEA0-701671DDFA08}
+ Duplicati.Library.Backend.SSHv2
+
+
+ {C0270709-2A40-43B5-8CF1-69581B9FA2A1}
+ Duplicati.Library.Backend.TahoeLAFS
+
+
+ {BAE27510-8B5D-44B2-B33E-372A98908041}
+ Duplicati.Library.Backend.WEBDAV
+
+
+ {0CA86ECF-5BEC-4909-B4F6-110A03B30B92}
+ Duplicati.Library.DynamicLoader
+
+
+ {C5899F45-B0FF-483C-9D38-24A9FCAAB237}
+ Duplicati.Library.Interface
+
+
+ {DE3E5D4C-51AB-4E5E-BEE8-E636CEBFBA65}
+ Duplicati.Library.Utility
+
+
+
\ No newline at end of file
diff --git a/Duplicati/CommandLine/BackendTool/Program.cs b/Duplicati/CommandLine/BackendTool/Program.cs
new file mode 100644
index 000000000..becabf1cd
--- /dev/null
+++ b/Duplicati/CommandLine/BackendTool/Program.cs
@@ -0,0 +1,151 @@
+#region Disclaimer / License
+// Copyright (C) 2011, Kenneth Skovhede
+// http://www.hexad.dk, opensource@hexad.dk
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+//
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Duplicati.Library.Interface;
+
+namespace Duplicati.CommandLine.BackendTool
+{
+ class Program
+ {
+ static int Main(string[] _args)
+ {
+ try
+ {
+ List args = new List(_args);
+ Dictionary options = Library.Utility.CommandLineParser.ExtractOptions(args);
+
+ if (!options.ContainsKey("ftp_password") && !string.IsNullOrEmpty(System.Environment.GetEnvironmentVariable("FTP_PASSWORD")))
+ options["ftp_password"] = System.Environment.GetEnvironmentVariable("FTP_PASSWORD");
+
+ if (!options.ContainsKey("ftp_username") && !string.IsNullOrEmpty(System.Environment.GetEnvironmentVariable("FTP_USERNAME")))
+ options["ftp_username"] = System.Environment.GetEnvironmentVariable("FTP_USERNAME");
+
+ if (options.ContainsKey("tempdir") && !string.IsNullOrEmpty(options["tempdir"]))
+ Library.Utility.TempFolder.SystemTempPath = options["tempdir"];
+
+
+ string command = null;
+ if (args.Count >= 2)
+ {
+ if (args[0].Equals("list", StringComparison.InvariantCultureIgnoreCase))
+ command = "list";
+ else if (args[0].Equals("get", StringComparison.InvariantCultureIgnoreCase))
+ command = "get";
+ else if (args[0].Equals("put", StringComparison.InvariantCultureIgnoreCase))
+ command = "put";
+ else if (args[0].Equals("delete", StringComparison.InvariantCultureIgnoreCase))
+ command = "delete";
+ else if (args[0].Equals("create-folder", StringComparison.InvariantCultureIgnoreCase))
+ command = "create";
+ }
+
+
+ if (args.Count < 2 || args[0].ToLower() == "help" || args[0] == "?" || command == null)
+ {
+ if (command == null && args.Count >= 2)
+ {
+ Console.WriteLine("Unsupported command: {0}", args[0]);
+ Console.WriteLine();
+ }
+
+ Console.WriteLine("Usage: ://:@ [filename]");
+ Console.WriteLine("Example: LIST ftp://user:pass@server/folder");
+ Console.WriteLine();
+ Console.WriteLine("Supported backends: " + string.Join(",", Duplicati.Library.DynamicLoader.BackendLoader.Keys));
+ Console.WriteLine("Supported commands: GET PUT LIST DELETE CREATEFOLDER");
+
+ return 200;
+ }
+
+ using(var backend = Library.DynamicLoader.BackendLoader.GetBackend(args[1], options))
+ {
+ if (backend == null)
+ throw new Exception("Backend not supported");
+
+ if (command == "list")
+ {
+ if (args.Count != 2)
+ throw new Exception(string.Format("too many arguments: {0}", string.Join(",", args)));
+ Console.WriteLine(string.Format("{0}\t{1}\t{2}\t{3}", "Name", "Dir/File", "LastChange", "Size"));
+
+ foreach(var e in backend.List())
+ Console.WriteLine(string.Format("{0}\t{1}\t{2}\t{3}", e.Name, e.IsFolder ? "Dir" : "File", e.LastModification, e.Size < 0 ? "" : Library.Utility.Utility.FormatSizeString(e.Size)));
+
+ return 0;
+ }
+ else if (command == "create")
+ {
+ if (args.Count != 2)
+ throw new Exception(string.Format("too many arguments: {0}", string.Join(",", args)));
+
+ if (!(backend is IBackend_v2))
+ throw new Exception(string.Format("{0} backend does not support creating folders", backend.ProtocolKey));
+ ((IBackend_v2)backend).CreateFolder();
+
+ return 0;
+ }
+ else if (command == "delete")
+ {
+ if (args.Count < 3)
+ throw new Exception("DELETE requires a filename argument");
+ if (args.Count > 3)
+ throw new Exception(string.Format("too many arguments: {0}", string.Join(",", args)));
+ backend.Delete(args[2]);
+
+ return 0;
+ }
+ else if (command == "get")
+ {
+ if (args.Count < 3)
+ throw new Exception("GET requires a filename argument");
+ if (args.Count > 3)
+ throw new Exception(string.Format("too many arguments: {0}", string.Join(",", args)));
+ if (System.IO.File.Exists(args[2]))
+ throw new Exception("File already exists, not overwriting!");
+ backend.Get(args[2], args[2]);
+
+ return 0;
+ }
+ else if (command == "put")
+ {
+ if (args.Count < 3)
+ throw new Exception("PUT requires a filename argument");
+ if (args.Count > 3)
+ throw new Exception(string.Format("too many arguments: {0}", string.Join(",", args)));
+
+ backend.Put(args[2], args[2]);
+
+ return 0;
+ }
+
+ throw new Exception("Internal error");
+ }
+
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine("Command failed: " + ex.Message);
+ return 100;
+ }
+ }
+ }
+}
diff --git a/Duplicati/CommandLine/BackendTool/Properties/AssemblyInfo.cs b/Duplicati/CommandLine/BackendTool/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..4ddc0936f
--- /dev/null
+++ b/Duplicati/CommandLine/BackendTool/Properties/AssemblyInfo.cs
@@ -0,0 +1,43 @@
+// Copyright (C) 2011, Kenneth Skovhede
+// http://www.hexad.dk, opensource@hexad.dk
+//
+// This library is free software; you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation; either version 2.1 of the
+// License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+// Information about this assembly is defined by the following attributes.
+// Change them to the values specific to your project.
+
+[assembly: AssemblyTitle("Duplicati.CommandLine.BackendTool")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
+// The form "{Major}.{Minor}.*" will automatically update the build and revision,
+// and "{Major}.{Minor}.{Build}.*" will update just the revision.
+
+[assembly: AssemblyVersion("1.0.*")]
+
+// The following attributes are used to specify the signing key for the assembly,
+// if desired. See the Mono documentation for more information about signing.
+
+//[assembly: AssemblyDelaySign(false)]
+//[assembly: AssemblyKeyFile("")]
+
diff --git a/Duplicati/CommandLine/Decrypter/Duplicati.CommandLine.Decrypter.csproj b/Duplicati/CommandLine/Decrypter/Duplicati.CommandLine.Decrypter.csproj
index 498dfd730..ddcae8f09 100644
--- a/Duplicati/CommandLine/Decrypter/Duplicati.CommandLine.Decrypter.csproj
+++ b/Duplicati/CommandLine/Decrypter/Duplicati.CommandLine.Decrypter.csproj
@@ -16,13 +16,13 @@
3.5
- True
+ true
Duplicati.snk
- True
+ true
full
- False
+ false
bin\Debug\
DEBUG;TRACE
prompt
@@ -30,31 +30,12 @@
pdbonly
- True
+ true
bin\Release\
TRACE
prompt
4
-
- True
- bin\x86\Debug\
- DEBUG;TRACE
- full
- x86
- prompt
- 4
- False
-
-
- bin\x86\Release\
- TRACE
- True
- pdbonly
- x86
- prompt
- 4
-
diff --git a/Duplicati/CommandLine/Duplicati.CommandLine.csproj b/Duplicati/CommandLine/Duplicati.CommandLine.csproj
index 08be1b1a4..23bf3f41f 100644
--- a/Duplicati/CommandLine/Duplicati.CommandLine.csproj
+++ b/Duplicati/CommandLine/Duplicati.CommandLine.csproj
@@ -10,7 +10,7 @@
Properties
Duplicati.CommandLine
Duplicati.CommandLine
- True
+ true
Duplicati.snk
TrayWarning.ico
@@ -20,42 +20,23 @@
- True
+ true
full
- False
+ false
bin\Debug\
DEBUG;TRACE
prompt
4
- UNITTEST ~/testdata/DSMCBE/r50 ~/testdata/DSMCBE/r100 --no-encryption --fh-dbpath=C:\localdb\fh.sqlite --fh-no-local-blocks --fh-no-local-db --fh-blocksize=1kb
+ backup --volsize=100mb Z:\2013 webdavs://sd2dav.1und1.de:443/2013-fh?ftp-username=me@renestach.de&ftp-password=secret --passphrase=123456 --fh-dbpath=C:\Users\Stach\Desktop\2013-fh.sqlite --debug-output
pdbonly
- True
+ true
bin\Release\
TRACE
prompt
4
-
- True
- bin\x86\Debug\
- DEBUG;TRACE
- full
- x86
- prompt
- 4
- False
-
-
- bin\x86\Release\
- TRACE
- True
- pdbonly
- x86
- prompt
- 4
-
diff --git a/Duplicati/GUI/Datamodel/Datamodel.csproj b/Duplicati/GUI/Datamodel/Datamodel.csproj
index 29eadd560..47deee1cd 100644
--- a/Duplicati/GUI/Datamodel/Datamodel.csproj
+++ b/Duplicati/GUI/Datamodel/Datamodel.csproj
@@ -1,4 +1,4 @@
-
+
Local
@@ -20,7 +20,7 @@
- True
+ true
3.5
@@ -31,9 +31,9 @@
DEBUG;TRACE
- True
+ true
4096
- False
+ false
false
false
4
@@ -49,36 +49,13 @@
4096
- True
+ true
false
false
4
none
prompt
-
- True
- bin\x86\Debug\
- DEBUG;TRACE
- 285212672
- 4096
- full
- x86
- prompt
- 4
- False
-
-
- bin\x86\Release\
- TRACE
- 285212672
- True
- 4096
- x86
- prompt
- none
- 4
-
System
@@ -93,7 +70,13 @@
+
+
+ DatabaseUpgrader.resx
+ True
+ True
+
@@ -127,6 +110,11 @@
+
+ ResXFileCodeGenerator
+ DatabaseUpgrader.Designer.cs
+ Designer
+
diff --git a/Duplicati/GUI/Duplicati.GUI.MacTrayIcon/Duplicati.GUI.MacTrayIcon.csproj b/Duplicati/GUI/Duplicati.GUI.MacTrayIcon/Duplicati.GUI.MacTrayIcon.csproj
index ad884c864..53118d177 100644
--- a/Duplicati/GUI/Duplicati.GUI.MacTrayIcon/Duplicati.GUI.MacTrayIcon.csproj
+++ b/Duplicati/GUI/Duplicati.GUI.MacTrayIcon/Duplicati.GUI.MacTrayIcon.csproj
@@ -13,77 +13,32 @@
True
- True
+ true
full
- False
+ false
bin\Debug
DEBUG;
prompt
4
- False
- False
- False
- False
- False
- False
+ false
+ false
+ false
+ false
+ false
+ false
none
- False
+ false
bin\Release
prompt
4
- False
- False
- False
- False
- False
- False
-
-
- none
- False
- bin\X86\Debug
- 4
- False
- False
- False
- False
- False
-
-
- none
- False
- bin\x86\Release
- 4
- x86
- False
- False
- False
- False
- False
-
-
- none
- False
- bin\Release
- 4
- False
- False
- False
- False
- False
-
-
- none
- False
- bin\Debug
- 4
- False
- False
- False
- False
- False
+ false
+ false
+ false
+ false
+ false
+ false
diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj
index b0eaa7073..4ae175789 100644
--- a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj
+++ b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj
@@ -2,7 +2,7 @@
Debug
- x86
+ AnyCPU
8.0.30703
2.0
{17566860-3D98-4604-AA5B-47661F75609F}
@@ -27,25 +27,6 @@
false
true
-
- x86
- True
- full
- False
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- x86
- pdbonly
- True
- bin\Release\
- TRACE
- prompt
- 4
-
bin\Debug
full
@@ -53,13 +34,13 @@
true
true
4
- False
+ false
DEBUG
- True
+ true
bin\Release
- False
+ false
none
true
true
@@ -226,6 +207,22 @@
{C5899F45-B0FF-483C-9D38-24A9FCAAB237}
Duplicati.Library.Interface
+
+ {81765A64-3661-4E3E-B850-2F6F87A51F74}
+ Duplicati.CommandLine
+
+
+ {E7280DCA-7776-4A73-B9B5-41FD77FC8799}
+ Duplicati.CommandLine.BackendTester
+
+
+ {2AF960C0-357D-4D44-A3D5-8B6E89DB0F11}
+ Duplicati.CommandLine.BackendTool
+
+
+ {E2AF781D-D1E1-4512-BF2C-D6DA8D0F797F}
+ Duplicati.CommandLine.Decrypter
+
diff --git a/Duplicati/GUI/Duplicati.csproj b/Duplicati/GUI/Duplicati.csproj
index bd33da0ea..5e4867c53 100644
--- a/Duplicati/GUI/Duplicati.csproj
+++ b/Duplicati/GUI/Duplicati.csproj
@@ -1,4 +1,4 @@
-
+
Debug
@@ -11,7 +11,7 @@
Duplicati.GUI
Duplicati
Duplicati.ico
- True
+ true
Duplicati.snk
@@ -20,9 +20,9 @@
- True
+ true
full
- False
+ false
bin\Debug\
DEBUG;TRACE
prompt
@@ -31,31 +31,12 @@
pdbonly
- True
+ true
bin\Release\
TRACE
prompt
4
-
- True
- bin\x86\Debug\
- DEBUG;TRACE
- full
- x86
- prompt
- 4
- False
-
-
- bin\x86\Release\
- TRACE
- True
- pdbonly
- x86
- prompt
- 4
-
@@ -663,6 +644,10 @@
{B60D0993-B0C5-457A-90D9-DB6EEB33CE47}
Datamodel
+
+ {2AF960C0-357D-4D44-A3D5-8B6E89DB0F11}
+ Duplicati.CommandLine.BackendTool
+
@@ -1110,6 +1095,15 @@
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+