Интерфейс C# Duplicati восстановить один файл
Я пытаюсь использовать Duplicati API для восстановления одного файла.
О сценарии: все работает на Linux, поэтому он скомпилирован с моно. Моя резервная копия содержит две исходные папки, поэтому, если я запустите Interface.ListSourceFolders()
Я получаю массив из двух.
Желаемый результат: я хочу восстановить один файл (или папку) из моей резервной копии
Текущий результат: если я запускаю приведенный ниже код, он восстанавливает все резервные копии файлов (таким образом, папка 1 и папка 2) по пути в //Comment1
,
List<string> files = new List<string>();
files.Add("path"); //Comment1
Dictionary<string,string> options = new Dictionary<string,string>();
options["passphrase"] = MySettings.Password;
options["restore-time"] = date;
//Comment2
Interface i = new Interface("file:///path/to/archives", options);
string result = i.Restore(files.ToArray());
Что я пробовал: я пытался установить путь в //Comment1
на абсолютный путь (/desired/file/to/restore
) или используя индекс исходной папки (0/file/to/restore
) и я тоже поиграл //Comment2
, например, я добавил что-то вроде options["restore-path"] = "/path/to/restore"
, Я всегда получаю один и тот же результат.
Кто-нибудь видит, что я делаю не так? Потому что я не знаю, что еще я мог попробовать. Там почти нет документации, поэтому я не знаю, где искать. Если кто-то знает ссылку на хорошую документацию, я тоже был бы счастлив!
1 ответ
На случай, если кому-то интересно. Попробовав несколько часов, я наконец узнал, как восстановить только один файл или папку. Вот что я делаю сейчас:
List<string> files = new List<string>();
files.Add("/restore/path"); //Comment1
Dictionary<string,string> options = new Dictionary<string,string>();
options["passphrase"] = MySettings.Password;
options["restore-time"] = date;
options["file-to-restore"] = "files"; //Comment2
Interface i = new Interface("file:///path/to/archives", options);
string result = i.Restore(files.ToArray());
В //Comment1
вам нужно установить желаемый путь восстановления. В этой папке создаются все наборы резервных копий (папки из Interface.ListSourceFolders()
)
В //Comment2
Вы можете указать файлы для восстановления в этой форме: 0/file/to/restore
где 0
это индекс исходной папки (Interface.ListSourceFolders()
). Если вам нужно восстановить несколько файлов, вы можете сделать это, объединив их в одну строку: например, Windows: 0/file1;1/file2
или Linux 0/file1:1/file2
(Разница - точка с запятой или двоеточие)
Теперь есть еще одна вещь: вы не можете восстановить папку с ее файлами. Вам необходимо объединить все файлы и вложенные файлы в строку, указанную выше.
Я надеюсь, что смогу помочь кому-нибудь.