Ubuntu программа для синхронизации файлов
Wpilot
Как связать Андроид и Linux в единое целое. Синхронизировать работу между устройствами и спокойно обмениваться данными.
KDE Connect это приложение для Android плюс приложение для Linux и контакт между устройствами будет налажен.
KDE Connect предоставляет массу полезных функций, таких как просмотр уведомлений Android на рабочем столе Linux, узнать состояние заряда батареи и синхронизация буфера обмена,а также инструменты дистанционного управления мультимедиа и даже превращая ваше мобильное устройство в компьютерную мышку.
Если этого недостаточно KDE Connect также поддерживает отправку файлов в обоих направлениях между Linux и Андроид устройством.
В KDE Connect предусмотрено система плагинов, так что вы можете отключить любую функцию если не хотите использовать.
KDE Connect использует шифрование RSA что обеспечивает безопасное соединение между устройствами. Также гарантирует что неконтролируемые устройства не смогут соединить себя с вашими настройками.
Если Linux не определяется автоматически в приложении KDE Connect на Андроид введите вручную IP-адрес.
Управление курсором мыши на расстоянии особенно привлекательно что позволяет превратить Android телефон в беспроводной пульт для компьютера.
Нескольких устройств соединенных вместе и включенная функция синхронизация буфера обмена это здорово.
Если вы что-то скопировали в буфер обмена на рабочем столе компьютера то KDE Connect обнаружит и синхронизирует с Android устройством. Также синхронизация работает в обратном направлении.
Функция дистанционного управления позволяет удаленно управлять музыкальными плеерами и видеоплеерами с вашего Android устройства. Эта функция поддерживает большое количество аудио и видео плееров, включая Amarok, VLC и многие другие. Хотите проверить поддерживается плеер выбранный вами. Все, что вам нужно сделать, это открыть музыку или видео в этом проигрывателе, а затем в вкладке Управление воспроизведением в Android приложении KDE Connect автоматически обнаружит его и позволит управлять плеером.
KDE Connect использует пакет SSHFS для монтирования файловой системы Android устройства на Linux. Все что вам нужно это установить этот пакет на Linux и файловый менеджер автоматически обнаружит все файлы Андроид смартфона.
sudo apt-get install sshfs
Пользователям Linux не нужно делать ничего особенного, просто установите пакет «kdeconnect» из репозитория и вы сможете начать соединение через сеть WiFi между Андроид и Linux.
sudo add-apt-repository ppa:vikoadi/ppa
sudo apt-get update
sudo apt-get install indicator-kdeconnect kdeconnect
KDE Connect удобный набор инструментов и лучшее решение для соединения Android устройства с Linux.
Записки IT специалиста
Админу на заметку — 21. Используем PowerShell для синхронизации каталогов
- Автор: Уваров А.С.
- 16.03.2017
В арсенале каждого системного администратора со временем накапливаются удобные инструменты, которые значительно облегчают выполнение ряда повседневных задач. Чаще всего это небольшие, но удобные утилиты или скрипты. Мы постоянно знакомим наших читателей с различными инструментами из нашей коллекции и на этот раз речь пойдет о простом, но достаточно функциональном PowerShell-скрипте для односторонней синхронизации каталогов.
Синхронизация каталогов — довольно часто встречающаяся задача, когда необходимо поддерживать соответствие содержимого в нескольких местах. От копирования данная операция выгодно отличается тем, что позволяет передавать только новые или измененные объекты, что позволяет существенно сократить трафик и время выполнения задачи. В Linux системах для этой цели есть мощная и удобная утилита rsync, а в Windows — robocopy, которые давно зарекомендовали себя и широко используются системными администраторами.
Но не так давно мы нашли один интересный PowerShell-скрипт который может послужить удобной заменой robocopy для простых задач автоматизации. Скрипт написан энтузиастом и выложен на сайте автора. Также архив со скриптом можно скачать по прямой ссылке:
Внутри находится собственно скрипт Sync-Folder.ps1, который следует разместить в любом удобном месте.
Что интересного может предложить нам этот скрипт? На наш взгляд, основное его достоинство — это поддержка конфигурационных файлов в формате XML, в которых мы можем описать сразу несколько заданий с параметрами, которые будут выполнены последовательно. Кстати, robocopy тоже позволяет создавать файлы заданий, но один файл может содержать только одно задание и предназначен прежде всего для того, чтобы каждый раз не вводить все опции.
Давайте распакуем наш скрипт в произвольную папку, скажем C:ADM и разместим там же файл конфигурации MySyncJob.xml. Будучи запущен без параметров скрипт ищет рядом с собой файл Sync-FolderConfiguration.xml и выполняет записанное в нем задание, это может быть удобно, но на наш взгляд удобнее давать конфигурационным файлам осмысленные наименования, что облегчит в последующем поиск нужных заданий, а также убережет от возможного нежелательного выполнения задания в случае случайного запуска скрипта. Все свои действия скрипт записывает в файл лога, который располагается в своей рабочей директории.
Откроем блокнотом XML-файл и внесем в него следующее содержимое (пример взят с сайта автора скрипта):
Начинается файл конфигурации с тега <Configuration>, который следует обязательно закрыть в конце. Задания синхронизации находятся внутри тегов <SyncPair>, обязательными являются два тега <Source> — путь к источнику данных и <Target> — место назначения. Можно указывать как локальные, так и сетевые расположения.
Тег <Filter> позволяет задать некоторую маску для копирования, например, только txt-файлы. Обратите внимание, что это именно маска, а не перечень расширений и т.п. Допускается использование подстановочных выражений, но фильтр может быть только один. Например, такая конструкция работать не будет, хотя ошибкой не является:
Использование в пределах одного задания двух тегов <Filter> приведет к синтаксической ошибке, поэтому если вам нужно копировать только файлы двух типов, скажем PNG и JPG, то следует создать два задания с одинаковыми параметрами, но разными фильтрами.
Заданное без подстановочных знаков выражение будет восприниматься буквально. Если вы хотите синхронизировать все файлы, содержащие в имени строку old, то следует указать:
отберет все файлы, которые начинаются с old, т.е. файл oldfile.txt будет скопирован, а fileold.txt — нет, в то время как с предыдущим фильтром были бы скопированы оба.
Кроме фильтра можно задавать исключения, которых может быть много и для их описания используется тег <ExceptionList>, внутри которого располагается список исключений, каждое из которых оформляется тегами <Exception>. В приведенном примере будут пропущены все файлы txt имеющие в имени строку p234.
После того, как файл конфигурации создан самое время проверить его в деле, запустим консоль PowerShell и запустим наш скрипт, указав ему пусть к конфигурационному файлу:
По результатам работы скрипта вы получите короткий отчет, более подробную информацию можно почерпнуть из лога, который очень хорошо читается и предоставляет исчерпывающую информацию, откуда и куда копируем, какой фильтр, какие исключения и какие именно действия были предприняты.
Если вы отлаживаете сложный сценарий, то столь подробный лог окажется очень к месту, также можно включить интерактивный вывод результатов в консоль, используя ключ -Verbose:
Если необходимо вызывать скрипт из командной строки или пакетного файла, то следует использовать следующую конструкцию:
В целях безопасности PowerShell-скрипты могут исполняться только интерактивно, т.е. сначала нужно запустить оболочку PowerShell, а затем в ней вызвать скрипт. В нашем случае сначала запускается оболочка, которой передается нужная команда на исполнение скрипта, аналогичная тому, как это было бы сделано интерактивно.
Существует также другой метод, когда файл скрипта передается оболочке в качестве аргумента, он достаточно широко распространен в различных материалах в сети, но не является рекомендуемым, так как в этом случае некоторые механизмы скриптов могут работать некорректно. В нашем случае будет неправильно определена автоматическая переменная
В итоге скрипт попытается записать файл лога не рядом с собой, а в корень диска C:, что обычно запрещено политиками безопасности и приведет к ошибке.
Чтобы добавить наш скрипт в планировщик заданий следует поступить аналогичным образом, создадим новую задачу, установим условия ее выполнения и на закладке Действия в качестве действия выберем Запуск программы, в поле Программа или сценарий укажем
а в поле Добавить аргументы внесем команду на исполнение скрипта, также как мы это делали в командной строке:
Как видим, данный скрипт не делает ничего такого, что не умела бы robocopy, но благодаря возможности использовать конфигурационные файлы позволяет упростить многие задачи по синхронизации данных. В один конфигурационный файл можно добавить нужное число заданий, а простой и структурированный синтаксис позволяет легко читать данные файлы. Добавьте к этому подробные и понятные логи.
Кроме того, использование для автоматизации PowerShell скриптов гораздо более безопасно, чем пакетных файлов, так как это исключает возможность ошибочного или случайного запуска просто по двойному клику.
Надеемся, что данный материал окажется вам полезен и указанный скрипт займет достойное место в применяемых вами инструментах.
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:
Ubuntu программа для синхронизации файлов
Для меня важно, чтобы она 1) приводила две директории к одному знаменателю и 2) могла работать по расписанию на автопилоте.
Я перерыл больше 20-ти разных прог для синхронизации и бэкапа. Критичной оказалась первая характеристика. В подавляющем большинстве случаев есть возможность копирования и синхронизации одного каталога по образцу другого (забивая все новое, что есть в первом).
Попалась одна подходящая прога (ViceVersa Plus 2.4.2), но она не копирует некоторые файлы, названные по русски (по какому принципу прога отказывается копировать я не понял).
Помогите, если кто что-нибудь об этом знает. Заранее сенкс.
Список прог, которые я перелопатил:
Цитата:
советую AllwaySync — http://allwaysync.com/ |
Прога платная и в свободном полете имеет онграничения порядка 40 000 файлов / мес.
Однако непонятно, что имеется в виду: процесс сравнения всех файлов, процесс переписи файлов (новых добавок).
У меня отказалась работать в авторежиме.
Добавлено:
После гемора с AllwaySync перешел с тестированию FreeFileSync 5.0 .
Удивительно, свободная прога (free) и никто не отписался. Почему?
Ее специально разрабатывали во Free Community , международный проект.
Размер 10 Мб (солидно) и 5 версия уже (солидно).
Прошу протестировать и отписаться. Если кто-нить найдет, что знает лучше.
Добавлено:
Nikolya 2011
Цитата:
Обычный тотал командер в Инструментах выбираешь синхронизировать каталоги и дальше читаешь и действуешь, там все написано, он вначале удаляет (10 раз переспрашивая), а потом копирует недостающие и ВСЕ. |
А о недостатках этой проги сами выше читали что люди пишут или нет?
Или 165 кб критичный размер? — Если пользоваться Total Commander, то вообще будет 0 Кб
Если на размер проги ориентроваться, то NotePad как WordPad никогда не заработает, сорри.
Цитата:
лучшая, из тех, что я перелопатил, это BestSync 2011 очень и очень достойный синхронизатор |
Действительно, кто работает с FTP — вещь буквально (!) незаменимая другими, имея в виду проблему с таймстемпами. Нормально работает с FTP-сервером FileZilla, удобный бесплатный.
Добавлено:
reversecode
Цитата:
вы бы для начала запустили и разобрались чем читать что другие пишут |
Есть 4 папки:
-первая находятся на HDD компьютера,
-вторая на съемном HDD,
-третья на HDD ноутбука,
-четвертая на флешке
Представим что изначально во всех этих папках все одинаково.
Затем,
1) я работаю с файлами на съемном HDD (изменяю файлы, перемещаю файлы внутри исходной папки по подкаталогам, создаю новые и т.д.)
2) еду по работе с флешкой, изменяю файлы, добавляю, удаляю и т.д.
3) прихожу домой, опять таки изменяю, добавляю, удаляю и т.д. файлы на HDD компьютера
А теперь все это нужно засинхронизировать!
Пробовал некоторые синхронизилки, пока не нашел решение своей задачи.
директории естественно синхронизируем попарно 1-2, 2-3, 3-4 это понятно, но как быть со следующим, например:
я переместил файлы в подкаталог исходной папки, как на картинке:
т.е. файлы во всех 4х папках были в "корне", а потом на каком-то из носителей я переместил их в подкаталоги, нужно чтобы софтина могла понять что файлы одинаковые и были перемещены, а не копирует (восстанавливает из др каталога) то что я переместил дублируя тем самым инфу в папке и подкаталогах.
если я изменю 1 и тот же исходный файл, но во всех папках и по разному, нужно чтобы софтина как то отследила что они разной версии (т.е. имя одинаковое, а изменения во всех папках разные)
ну и т.д. запросы конечно не слабые, но как то хотелось бы решить, прошу помощи в поисках решения
Вообще моё решение было бы таким (программ не знаю подходящих, одну сам написал недавно, но она немного другую задачу решает): либо 1) используем интернет и сразу на ходу синхронизируем. DropBox тому хорошая тулса.
или если нет интернета 2) Носим с собой хотя бы маленькую флэшку, куда фиксируем текущую версию, точнее изменения в папке, пример: есть исходная папка A, запустили прожку, зафиксировали куда-нибудь (можно на флэшку, можно в интернет) состояние начальное (версия 1) папки A, далее скопировали куда-то её и довели до состояния B (версия 2), когда завершились с работой, фиксируем (запуском прожки) состояние версии 2 (тоже на флэшку или инет), далее идём и где-то ещё берём папку A и правим её до C (версия альтернативного ответвления, первая была A->B, а здесь A->C), сообщаем прожке, что мы из A сделали C (а не из B). И т.д. накопили кучу версий той же папки, если мы всё дерево альтернативных ответвлений сообщили программе, то мы можем вполне синхронизировать, она уже будет знать, как прходили пути изменения.
А если просто наголо давать несколько папок слить, без вопросов к пользователю (типа а какая структура папок или версия файла новее) не обойтись, или если обойтись можно напортачить и чтонибудь испортить.
Задача схожая в системах контроля версий исходников в программирования (Source Version Control) и там часто когда разные программисты правят одновременно файлы и папки те же, возникают иногда конфликты, которые программы контроля предлагают решить вручную, задавая вопросы типа 1) взять версию A или версию B, или их соединить (это если файл текстовой) и когда соединяет, то даёт возможность подредактировать, т.к. и исходники просто так не всегда можно склеить не испортив логики.
BestSync 2012 представляет собой профессиональную утилиту для следующих решений: синхронизировать файлы между персональными компьютерами, используя сеть хранения данных, FTP сервер, USB Drive; синхронизации Outlook (почта, контакты, расписание и т.д.) и Windows Mail между персональными компьютерами, используя сеть хранения данных, FTP сервер, USB Drive ; резервное копирование критических файов на внешний жесткий диск, сеть хранения данных, FTP-сервер и т.д. автоматически.
Вы можете опубликовать свой веб-сайт , это удобно с FTP. Только обновленные файлы были переданы и удаленные файлы удаляются с вашего сайта . BestSync 2009 имеет простой в использовании интерфейс. Она позволяет сделать резервное копирование баз данных а также защитить данные путем сжатия и шифрования данных . Вы можете возобновить передачу файла с последнего разрыва соединения для копирования больших файлов в нестабильной сети .
О синхронизации данных в Linux
Когда дома есть в наличии большой компьютер и маленький, может возникнуть необходимость держать некоторые данные и там, и там. Причем, держать синхронизированно. Лично я, например, регулярно пользуюсь мега-программой для заметок Basket, и конечно мне хотелось бы, чтобы все заметки были доступны и на нотбуке, и на десктопе.
В Линуксе для решения задачи синхронизации есть все необходимое. В принципе, есть и готовые программы для синхронизации, но я считаю, что для моего случая достаточно rsync, md5sum и небольшого скрипта на bash. Ну и сетевого раздела NFS — чтобы через него синхронизироваться. Далее о том, как все делается.
Синхронизацию я провожу через сетевой раздел NFS, открытый на десктопе. В openSUSE, которая у меня установлена везде, поднять раздел NFS — дело трех кликов в yast2. Стоит однако заметить, что если на нотбуке используется Network Manager, имеет смысл немного изменить запись в /etc/fstab. Дело в том, что Network Manager подключает WiFi только после логина и загрузки оконного менеджера (KDE, в моем случае), а монтирование происходит раньше. Естественно, ввиду отсутствия доступа к сети, раздел NFS смонтирован не будет, да к тому же загрузка замедлится на несколько минут в ожидании ответа от сервера. Поэтому строчку, отвечающую за нужный раздел в /etc/fstab лучше подредактировать, добавив ключи noauto и users:
Ключ noauto отключает автоматическое монтирование раздела при загрузке, а users — разрешает простым смертным (а не только root-у) монтировать этот раздел по желанию. После этого достаточно (для KDE) в
/.kde4/Autostart/ добавить шелл-скрипт:
и выставить ему права на исполнение. Тогда при загрузке NFS-раздел будет монтироваться уже после старта KDE.
Теперь обозначу основные особенности рассматриваемого случая. Basket хранит каждую заметку в отдельном файле, корзины с заметками — это директории, причем вложенные корзины — это вложенные директории. Синхронизировать нужно, соответственно:
- группу файлов;
- с соблюдением вложенности директорий;
- с поддержкой удаления файлов;
- с пересылкой только изменившейся информации (файлов может быть более 9000!).
Для этого очень хорошо подходит консольное приложение rsync. Строчка
проводит синхронизацию из директории $LOCAL_DIR в $SRV_DIR с удалением файлов и записью информации о ходе пересылки в файл $LOG_FILE. В принципе на этом можно было бы и остановиться, но к сожалению эта строчка сама по себе едва ли годится для автоматической синхронизации. Дело в том, что команда хотя и проводит синхронизацию как надо, но при этом не подразумевает никакого решения вопроса «что новее — источник или приемник». То есть пользователь должен решить это сам, что конечно исключает автоматизм.
То есть нужно автоматически принимать решение, где данные новее — на сервере, или в локальной копии — и уже на основании этого вывода запускать rsync. Алгоритм придумывается простой, на основе хэша синхронизируемых данных:
- При каждом обновлении сервера вычисляется хэш данных и сохраняется в файл.
- Файл с хэшем копируется на компьютер, с которого было обновление.
- При следующей синхронизации локальная копия хэша сравнивается с хранимой на сервере.
- Если они различаются, значит данные на сервере обновились и нужно обновить локальную копию.
- Если они одинаковы, вычисляется хэш локальных данных и сравнивается с серверным хэшем.
- Если хэши отличаются, значит обновились локальные данные и нужно залить их на сервер.
Под сервером здесь подразумевается, конечно, раздел NFS.
Для вычисления хэша синхронизируемой директории используются команды:
Такое вычисление хэша учитывает как иерархию поддиректорий, так и содержимое файлов. При этом обязательно предварительно переходить в директорию (cd $LOCAL_DIR). Записать просто find $LOCAL_DIR/ . нельзя, так как тогда учитываемый в вычислении хэша путь к файлам будет вместо ./ содержать полный путь, а пути к сетевой и локальной копии, естественно, отличаются, то есть хэши всегда будут различными.
Это, в общем-то, все. Имеет смысл отметить недостатки получившейся системы. Их я вижу два:
- Синхронизация очевидно не имеет средств разрешения конфликтов (когда данные изменились и локально, и на сервере). Но на это она и не рассчитана, я ведь один и не буду скакать по компьютерам и менять все подряд.
- Из-за сложности вычисления хэша, синхронизация будет очень долго работать по директориям с большими объемами данных (фото, видео, аудио). Это проблема, ага.
Просто отредактируйте пути в начале скрипта, положите его в
/bin, выдайте права на запуск и добавьте, например, в cron на всех машинах, участвующих в синхронизации. И все.
Кстати. Перед установкой обязательно бэкапните синхронизируемые данные. Мало ли что.