Выгрузка архивных копий файлов на облако mail

Выгрузка архивных копий файлов на облако mail. (webdav, c#).
Данная статья может быть полезной администраторам, программистам, чьи копии баз хранятся в облаке мейл.

Штатная выгрузка работает в обе стороны, в случае если шифровальщик зашифрует данные либо будут ошибочно удалены, они обновятся на облаке.

mail ru сделал крутое api, программист Erast Korolev сделал отличную реализацию работы с mail облаком https://github.com/erastmorgan/Mail.Ru-.net-cloud-client

Слегка доработаем, и получим утилиту для выгрузки данных на облако мейл, с последующим удалением по истечению 45 дней из облака мейл

 

using System;
using MailRuCloudApi;
using System.IO;
using System.ComponentModel;

namespace ConsoleApplication1
{
class Program
{
static private Account account;

static void Main(string[] args)
{
Console.WriteLine(args.Length.ToString());

if (args.Length != 4)
{
return;
}

var fileName = args[0];
var destinationPath = args[1];
var login = args[2];
var password = args[3];

account  = new Account(login, password);

var api = new MailRuCloud() { Account = account };

//var percent = 0;
api.ChangingProgressEvent += delegate (object sender, ProgressChangedEventArgs e)
{
//percent = e.ProgressPercentage
Console.WriteLine("uploading "+e.ProgressPercentage);
};

api.UploadFile(new FileInfo(fileName), destinationPath).Wait();

DateTime today = DateTime.Now;
DateTime answer = today.AddDays(Convert.ToDouble(-45));

Entry items = api.GetItems(destinationPath).Result;
foreach (MailRuCloudApi.File f in items.Files)
{
if (f.LastModifiedTimeUTC<answer)
{
api.Remove(f.FulPath).Wait();
}
}

api = null;

}
}
}

Запуск из bat:

path_to_exe "path_unload_file" "path_cloud_folder" "login" "password"

bat в планировщик настроить время при необходимости.

Скрин примера работы:

 

8 Comments

  1. pallid

    оно работает и на бесплатной подписке к облаку?

    в редми написано что работает и с файлами больше 2Гб, но вроде это возможно только на платных подписках

    Reply
  2. dmarenin

    работает на бесплатной, что касается свыше 2 гб сказать не могу не проверял, если через браузер возможно грузить больше 2 гб, то и утилита сможет

    Reply
  3. ifal

    (1) Судя по коду библиотеки там стоит ограничение при записи на 2Гб.

    Reply
  4. obmanOZ

    Добрый день! А можно для непродвинутых пользователей дать более подробную инструкцию как работать с скаченным материалом )

    При скачке ожидал, что внутри будет развернутая инструкция типа как ставить, какие требования, что прописать и куда и пример )

    Reply
  5. dmarenin

    в архиве есть батник, в нем меняете свои пути, пример есть в статье

    Reply
  6. Shalnov
    последующим удалением по истечению 45 дней из облака мейл

    Было бы здоров, чтобы этот параметр тоже передавать, а если не передан, то по умолчанию 45

    Reply
  7. Shalnov

    C:BackupConsoleApplication1inDebug>C:BackupConsoleApplication1inDebugConsoleApplication1.

    exe «C:BackupBackup» «Backup» «тут был логин…» «тут был пароль»

    4

    Необработанное исключение: System.AggregateException: Произошла одна или несколько ошибок. —> Syst

    em.IO.FileNotFoundException: Файл ‘C:BackupBackup’ не найден.

    в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)

    в System.IO.FileInfo.get_Length()

    в MailRuCloudApi.MailRuCloud.<UploadFile>d__38.MoveNext() в D:\__\_sourceMail.Ru-.net-cloud-clie

    nt-masterMailRuCloudApiMailRuCloudApi.cs:строка 643

    — Конец трассировки внутреннего стека исключений —

    в System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken

    )

    в System.Threading.Tasks.Task.Wait()

    в ConsoleApplication1.Program.Main(String[] args) в D:\__\_sourceMail.Ru-.net-cloud-client-maste

    rConsoleApplication1Program.cs:строка 37

    Reply
  8. dmarenin

    (7)Файл ‘C:BackupBackup’ не найден.??

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *