Sync windows and linux

4 Free Software to Sync Files Between Windows and Linux Computers

I have a Windows laptop and an Ubuntu netbook, and it is a constant struggle to keep data in sync between both of them.

So, I started researching on the free software that can keep files and folders in sync between Windows and Linux computers. Most of the results that came use some sort of shell scripting, which isn’t something I prefer. I was looking for simple GUI tools to sync Linux and Windows computer.

After some time, I was able to find some good options. All these options are completely free, and simple to setup.

1) Dropbox

I am sure if anyone has heard about Dropbox, they would have immediately guessed that an easy solution to my problem is Dropbox. Dropbox installs on both Windows as well as Linux computer. After that, you create a Dropbox folder on both the computers. Dropbox will monitor any changes that happen to that folder in real time, and will sync it with Dropbox folder on other computer. Dropbox supports Mac as well, so you can actually keep data in sync between Linux, Windows, and Mac.

Dropbox Sync

Dropbox doesn’t requires both the computers to be online at the same time. Dropbox first backs data to its own server, and from there it propagates changes to other computers. So, if you work on a Windows computer in office during day, Dropbox will keep backing up your data to its own server. When you go home and start your Linux computer, Dropbox will fetch the changes from the server, and will sync the data on your Linux computer.

Dropbox runs in the background, and you don’t have to do anything once you have installed it. It will automatically take care of syncing data between Windows and Linux computer for you.

The only limitation with Dropbox is that free version supports only 2GB of data. You can get more free space by referring your friends (250 MB per friend). (If you use the link above to sign up with Dropbox, you will automatically get 250MB additional free, and I will get the same).

2) SpiderOak

SpiderOak is a lot similar to Dropbox (we call it one of the dropbox alternatives). This can also sync data between Windows and Linux computers, and also stores a copy of the data online. Both the computers do not need to be online at the same time.

SpiderOak syncs data in a completely secure manner. The free version of SpiderOak comes with 2GB of free space. However, SpiderOak measures space after compressing data, so you might potentially be able to sync more data with SpiderOak. On the other hand, SpiderOak does not gives option of getting extra free space by referring friends.

As is with Dropbox, SpiderOak also supports Mac too.

Both Dropbox and SpiderOak provide cloud based file syncing, so that your Windows and Linux computer do not need to be online at same time. The tools that I will mention below need both the computers to be online at same time (or, using a server to provide temporary storage.)

Читайте также:  Installation logs in linux

3) Unison File Synchronizer

Unison File Synchronizer is an intelligent file synchronization software that can keep data in sync between Windows and Linux computer. Unison File Synchronizer can update changes done on Windows computer to your Linux computer, and vice versa.

Unison

Unison makes use of intelligent algorithm to find the changes that needs to be synced. If a file is present on one computer, and not present on other, it is copied to other computer. In case there is a conflict that Unison cannot resolve, it asks you for resolution.

Unison needs both the computers to be online at the same time. Or, you can use an external drive to act as an intermediary. So, you can first sync your Windows computer to your external hard drive or USB stick, and then sync your Linux computer with that.

Unison has a GUI based interface, but still it might not be very intuitive to setup Unison on multiple computers.

Here are two good resources that explain how to setup Unison:

4) JFileSync

JFileSync stands for Java File Synchronization. JFileSync is a file synchronization software made in Java to sync files between multiple computers. JFileSync is truly cross platform, and can sync data across both Windows and Linux computer.

JFileSync comes with a nice GUI that makes it easier to setup. The library is around just 200 KB, and it does not needs any other additional software to work.

JFileSync

To sync data between Windows and Linux computer using JFileSync, you define the folders of both the computers as Sync targets. JFileSync will then do a comparison between them, and start the sync process.

JFileSync also requires both the computers to be online at same time, or you can use an external drive as an intermediary.

I went through JFileSync documentation, and it looks quite simple to setup. However, I did not get a chance to test it myself, so I am listing it at fourth position. If you have tried JFileSync, do share your feedback in comments section.

If you just want to sync data between multiple computers running Windows, you can try easier options like Live Mesh, and Microsoft Sync.

Источник

RSync на стероидах с поддержкой Windows

На Хабре периодически рассказывают о новых инструментах для синхронизации данных. Это интересная тема. Такие программы используются:

  • для синхронизации файлов на разных устройствах,
  • дедупликации,
  • резервного копирования,
  • сжатия.

Кроме того, инструменты синхронизации интересны с алгоритмической точки зрения. Любопытно, как люди умудряются оптимизировать базовые алгоритмы типа rsync , которые вроде бы работают идеально. Но нет, всегда можно придумать что-то получше.

rsync

Как известно, инструмент для быстрой синхронизации файлов rsync разработан австралийским программистом Эндрю Триджеллом по кличке Тридж в 1996 году для его кандидатской диссертации.

Суть алгоритма заключается в том, что файл разбивается на куски фиксированного размера, для каждого из них вычисляется MD4-хеш и скользящий хеш (rolling hash). Хеши отправляются второму компьютеру для сверки. В упрощённом виде схема выглядит так:

Читайте также:  Asus motherboard and linux

Этот алгоритм и концепция скользящего хеша используются во многих программах для синхронизации файлов, включая rdiff, librsync (Dropbox), sftp, macOS 10.5+, zsync (Ubuntu и другие Linux-дистрибутивы), rclone и др.

В последующие годы для rsync было разработано множество оптимизаций, особенно в части сжатия данных при их передаче.

CDC

Главным улучшением стало изобретение блоков переменного размера, когда границы скользящего окна не смещаются по биту, а устанавливаются в зависимости от содержимого файла. Другими словами, если у нас в битовом потоке попадается одинаковый фрагмент до 64 бит, то рамки скользящего окна сдвигаются на границу этого фрагмента. То есть разбиение на блоки происходит в зависимости от контента. Так появился алгоритм CDC (Content Defined Chunking), который благодаря своей простоте и эффективности стал по-настоящему гениальным изобретением.

Для сравнения, вот схема работы CDC:

CDC решает «проблему сдвига границы», показанную на КДПВ.

А теперь мы переходим к самому интересному…

Помните, был такой игровой сервис Stadia, который повторил судьбу десятков замечательных проектов компании Google, прибитых на взлёте? Сегодня он встречает похоронной надписью на главной странице:

Проект закрылся 18 января 2023 года…

Главная инновация Stadia состояла в трансляции видео с серверов Google на тонкие клиенты пользователей с минимальной задержкой. Говорят, работало фантастически. И просто удивительно, что Google решила убить такой перспективный проект.

Так или иначе, одной из внутренних технологий Stadia была эффективная синхронизация данных между Windows-серверами (большинство игр работает под Windows) и облачными Linux-инстансами для разработчиков. Сами разработчики Stadia первоначально использовали обычный scp , но он всегда копировал полные файлы без режима копирования «дельты» изменений, и в нём не было быстрого сжатия. Поэтому разработчики Stadia написали внутренние инструменты, которые решают эту проблему.

CDC File Transfer

В репозитории CDC File Transfer выложены две утилиты для синхронизации и стриминга файлов между машинами Windows → Windows или Windows → Linux. Это cdc_rsync и cdc_stream , соответственно. Обе используют упомянутый ранее алгоритм Content Defined Chunking (CDC) для максимально эффективного сжатия с учётом контента.

И теперь все желающие могут без проблем использовать эти инструменты для своих личных нужд, ставить на свои серверы и интегрировать в свои проекты. Чем многие не преминули воспользоваться: за несколько месяцев у проекта уже 75 форков и более 2700 звёзд на Github.

▍ cdc_rsync

Если вкратце, cdc_rsync работает примерно так же, как известная линуксовая утилита rsync. В большинстве случаев она просто быстро копирует файлы с одной системы на другую, но оптимизирована для ситуаций, когда на целевой системе уже есть старые копии файлов. В этом случае программа быстро проверяет метку времени и размер файла (тогда файл игнорируется с минимальной тратой времени на проверку). Если файл существует, но изменился, то утилита определяет, какие конкретно части файла изменились — и обновляет только их. И во всех случаях используется быстрый алгоритм сжатия данных.

Алгоритм удалённой сверки файлов основан на CDC, а по внутренним тестам Google он работает примерно в 30 раз (!) быстрее, чем rsync . Причины такого ускорения заключаются в значительной оптимизации по сравнению со стандартным алгоритмом rsync, который при сравнении копий файла использует скользящее окно фиксированного размера.

Читайте также:  Устанавливаем линукс на виртуал бокс

Эта оптимизация сильно влияет на общее время синхронизации файлов. На следующей диаграмме из репозитория показаны результаты реального тестирования cdc_rsync и линуксового rsync под Cygwin в Windows.

В целом, cdc_rsync синхронизирует файлы примерно в три раза быстрее, чем rsync под Cygwin. В качестве тестовых данных использовались девелоперские билды игры общим размером 40-45 ГБ. На трёх билдах, вероятно, потерялись какие-то файлы, что резко увеличило время синхронизации.

В итоге получается, что алгоритм cdc_rsync гораздо быстрее, чем rsync , и при этом проще. Поскольку границы блоков перемещаются вместе со вставками или удалениями, задача сопоставления локального и удалённого хешей является тривиальной операцией разности множеств. Она больше не включает поиск побайтовой хеш-карты.

▍ cdc_stream

В свою очередь, cdc_stream — это инструмент для потоковой передачи файлов и каталогов с Windows на Linux. Концептуально он похож на sshfs , но оптимизирован для скорости чтения. Утилита не поддерживает запись файлов обратно из Linux в Windows. Каталог Linux доступен только для чтения.

Вот как работает программа:

А ниже сравнительные графики производительности: время запуска игры от начала операции до появления меню на экране. Тестировались разные игры для Stadia, но в целом процесс демонстрирует скорость потоковой передачи любых файлов:

Судя по проведённым тестам, cdc_stream копирует файлы примерно в 2–5 раз быстрее, чем sshfs . Как можно понять из объяснений выше, эта разница обеспечена преимуществом CDC над стандартным алгоритмом rsync. Для эффективного диффиринга используется тот же алгоритм на основе CDC, что и в программе cdc_rsync .

Если файл изменился на Windows, то в систему Linux передаются только различия (дельта). Это происходит в момент считывания файла под Linux. Остальное считывается из кэша. Изменения в файлах Windows отражаются в Linux с задержкой от 0,5 с (плюс примерно 0,7 с на каждый гигабайт).

Операции stat выполняются очень быстро, поскольку метаданные (имена файлов, разрешения и т.д.) оптимизированы для потоковой передачи.

Более подробно об использовании инструментов cdc_rsync и cdc_stream и необходимой конфигурацией SSH и SFTP см. в документации на Github, а также в документации/комментариях внутри кода. В целом, cdc_rsync используется аналогично scp или rsync , с таким же синтаксисом, понимает стандартные виндовые заменители типа * и ? :

cdc_rsync C:\path\to\*.txt user@linux.device.com:~

Локальная синхронизация с Windows на Windows рекурсивно ( -r ) с визуальным индикатором прогресса ( -v ):

cdc_rsync C:\path\to\assets\* C:\path\to\destination -vr

Примечание. Инструменты cdc_rsync и cdc_stream — не единственные, в которых реализован алгоритм разбиения на блоки с учётом контента (CDC). Его использует restic и другие продвинутые инструменты для синхронизации и резервного копирования. В последние годы оптимальной реализацией CDC считалась FastCDC с поддержкой Gear-based CDC (GC) со скользящими хешами для разного размера окон, что повышает производительность вычислений (с оптимизациями 2020 года), есть версии на Rust, Python, C и др.

Подобные инструменты можно использовать для дедупликации файлов и резервного копирования по дельте. В большом масштабе это высвободит большой объём дискового пространства, сэкономит время и повысит скорость операций.

Разработчики пишут, что софт сделан на основе FastCDC с учётом конкретной сферы применения: максимально быстрой инкрементальной синхронизации файлов. И кажется, что это наследие Stadia — действительно лучший вариант для синхронизации/стриминга с Windows на Linux.

По крайней мере, крах Stadia принёс какую-то пользу обществу.

Источник

Оцените статью
Adblock
detector