none
Command line способ синхронизироватся с yandex.disk RRS feed

  • Вопрос

  • Подскажите какой нибудь хороший Command line способ синхронизировать
    Папку с данными 200Gb на моем ноутбуке.
    С папкой хранящейся на yandex.disk
    Синхронизировать надо с ноутбука на yandex.disk
    В одну сторону.
    Чтобы не закачивало то что уже и так закачано.

    0) yandex.disk программа
    В ней очень много проблем.
    Очень не удобная программа.
    Наверно худший из опробованных вариантов.
    - Она не command line
    - Нельзя задать направление синхронизации
    ( программа за меня определяет направление - и часто не верно )
    - Нельзя добавить в исключения синхронизацию папки System Volume Information
      причем yandex.disk ее синхронизировать не может и все время матерится что не может ее синхронизировать.
    - И много других

    1) Способ net use + robocopy

    net use Y: "https://webdav.yandex.ru" /user:****@yandex.ru ****
    $params = "/E", "/R:0", "/DCOPY:T", "/MIR"
    $folder_source = "d:\folder_source"
    $folder_dest = "Y:\folder_dest"
    & robocopy $folder_source $folder_dest $params

    Но в итоге этот скрипт работает необычайно медленно.
    Несмотря на то что интернет 100/100 Mbit/s
    Да и к тому-же он закачивает данные через диск C:

    За двое суток работы скрипта полностью заполнился диск C:
    Папка была размером 14ГБ
    C:\Windows\ServiceProfiles\LocalService\AppData\Local\Temp\TfsStore\Tfs_DAV

    Это при том, что различия в синхронизируемых папках самые минимальные.
    И скрипт должен был отыскать различия и закачать только различия.

    Вот скрин работы скрипта.
    lnk

    Если синхронизировать папку на ноутбуке и сетевую папку с помощью robocopy
    То скрипт мой работает хорошо. Быстро наглядно стабильно.
    Если webdav то работает плохо.
    Может можно это как-то поправить ?
    Может я делаю в этом случае что то не так.

    2) Пробовал делать это через cyberduck cli
    Он работает лучше всех перепробованных мною способов.
    - Быстрый
    - Поддерживает много поточность.
    - Умеет восстанавливать операцию после обрыва

    - Но к сожалению он не умеет синхронизировать папки.
    Вот ссылки на то как я пытался найти способ как с помощью его провести синхронизацию.
    lnk
    lnk

    ------------------------------------------------------------------------------------------------------------------------------------------

    В результате на данный момент Использую cyberduck cli
    Он очень быстро справляется с тем чего не хватает в папке назначение.
    И очень быстро заливает недостающее в папку назначени из папки источника.
    Но к сожалению не умеет удалить в папке назначения то что уже удалено в папке источника.
    Из-за этого со временем папка назначения пухнет от старых версий или удаленных уже файлов.
    Приходится периодично когда это начинает мешать.
    Сносить полностью папку назначения. И полностью ее заливать заново

    • Изменено korggrodno3 17 августа 2017 г. 6:27
    17 августа 2017 г. 6:25

Все ответы

  • Привет.

    Я бы посоветовал robocopy /maxage:1 /MT:32 попробовать использовать. Ключи заберут файлы, измененные за один день и увеличат количество потоков( по умолчанию 8) Ну, и на PS можно тоже коротко понабросать что хочется, передавая эти параметры в robocopy. Примеров в сети масса.

           

    17 августа 2017 г. 8:04

  • По скорости работы скрипта в локальной  сети и через каналы WAN тут все просто, локальная сеть скорость от 100 Mb\Sec +-, интернет от 64 Kb Sec.



    У меня именно интернте 100/100 Mbit/s . Локальная сеть гигобитная.

    17 августа 2017 г. 8:35
  • Привет.

    Я бы посоветовал robocopy /maxage:1 /MT:32 попробовать использовать. Ключи заберут файлы, измененные за один день и увеличат количество потоков( по умолчанию 8) Ну, и на PS можно тоже коротко понабросать что хочется, передавая эти параметры в robocopy. Примеров в сети масса.

           

    Может быть у меня что то не то с набором параметров

    Options : *.* /S /E /DCOPY:T /COPY:DAT /PURGE /MIR /MT:32 /R:0 /W:30

    Добавил /MT ничего не поменялось в скорости.

    Попробовал также добавить "/MT:32", "/maxage:1", "/log:out.txt"

    Но опять же скорость как у черепахи.

    17 августа 2017 г. 8:57
  • param(
    		[string]$msg			= "<No Msg>",							# текст сообщения
    		[string]$log_all		= "log_all.txt",						# файл для накопления логов
    		[string]$exe			= "robocopy",							# инструмент для копирования
    		[string]$folder_backup	= "y:\",								# Место где живут, обитают BackUp
            [string]$folder_source	= "d:\"									# Важные данные для BackUp
    )
    
    $old_location = Get-Location
    # Задаем текущее местоположение равное местоположению скрипта
    $script_location = Split-Path -parent $MyInvocation.MyCommand.Definition
    set-location $script_location
    
    	$dest_void = "backup_zenbook_last"
        $dest = $folder_backup + $dest_void + "\"
    	    
        # получаем список подпапок заданной папки
    	[string[]]$path_all = @(Get-ChildItem ($folder_source + "*") | where {$_.Attributes -eq "Directory"} | % { $_.name} )
    	#$path_all = $path_all | % { $_ + "\" }
    	$path_all = $path_all | Where-Object { $_ -ne "_Downloads" }
    
    	# set params= /COPYALL /E /R:0 /DCOPY:T /MIR /Z
    	# /Z 		- использовать журнал возобновления на случай потери сетевого соединения  - ОЧЕНЬ ЗАМЕДЛЯЕТ
    	# /MIR		- из каталога назначения удалить все файлы отсутствующие в каталоге источника 
    	# /DCOPY:T	- сохранять оригинальные метки времени у каталогов
    	# /E		- копировать содержимое каталога истончика рекурсивно
    	# /R:0		- не повторять попытки для заблокированных файлов
    	# /COPYALL	- копировать включая все атрибуты файлов - СЛЕГКА ЗАМЕДЛЯЕТ
    	# (эквивалентно /COPY:DATSOU, D=данные, A=аттрибуты, T=метки времени, S=безопасность=списки контроля доступа NTFS, O=владелец, U=аудит)
    	# $params = "/E /R:0 /DCOPY:T /MIR"
    	$params = "/E", "/R:0", "/DCOPY:T", "/MIR", "/MT:32", "/maxage:1", "/log:out.txt"
    	
        $path_all | % { & $exe $folder_source$_ $dest$_ $params }
    	
    set-location $old_location

    Так  выглядит мой скрипт полностью.  Вдруг в нем какаято ошибка.  Которая все замедляет.
    17 августа 2017 г. 9:12
  • Хочу отдельно заметить тот факт который я уже упоминал.
    Если синхронизировать папку на ноутбуке и сетевую папку с помощью robocopy
    То скрипт мой работает хорошо. Очень быстро наглядно стабильно.
    Если webdav то работает плохо.
    Тут уже тормоза неимоверные. Откуда они берутся для меня загадка.
    Но этот факт указывает, что скорее всего у меня с ключами все ОК.
    И конкретно robocopy не дружит с webdav
    net use Y: "https://webdav.yandex.ru" /user:***@yandex.ru ***
    17 августа 2017 г. 10:58