0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Синхронизация файлов между сайтами

Синхронизация файлов между сайтами

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

Для этих целей есть unix утилита Rsync, которая позволяет быстро выполнить синхронизацию новых файлов в различных директориях.

Синтаксис команд

Как правило утилита уже установлена на множестве хостингах и запускается в консоле через SSH. Команды выполняется по следующему синтаксису:

rsync -опции исходная_директория/ директория_назначения

В конце исходной директории стоит слеш, чтобы обрабатывалась сама директория и всё её содержимое.

Основные опции

-vВыводить подробную информацию.
-progressВыводить прогресс передачи файла.
-qНе выводить информацию.
-cПроверка контрольных сумм для файлов.
-aРежим архивирования.
-RИспользуются относительные пути.
-bСоздание резервной копии.
-uНе перезаписывать более новые файлы.
-lКопировать символьные ссылки.
-LКопировать содержимое ссылок.
-HКопировать жесткие ссылки.
-pСохранять права для файлов.
-gСохранять группу.
-tСохранять время модификации.
-eИспользовать другой порт для ssh.
-zСжимать файлы перед передачей.
-deleteУдалять файлы которых нет в источнике.
-excludeИсключение файлов по шаблону.
-r
-recursive
Обрабатывать директории рекурсивно.
-n
-dry-run
Тестовый прогон без синхронизации.

Синхронизация в рамках одного хостинга

Если два сайта находятся на одном хостинге, задача упрощается т.к. файлы обеих сайтов находятся в одном дисковом пространстве. Остается только узнать полные пути до директорий и выполнить копирование новых файлов из /home/example.ru/uploads в /home/example.com/uploads

Синхронизация в обе стороны выполняется двумя командами:

При повторном выполнении команд утилита будет обновлять файлы только с изменениями, но не удаляя их.

Синхронизация файлов с удаленным хостом

Для синхронизации файлов на разных хостингах, rsync должен быть установлен на обоих серверах, в команде указывается логин и адрес хоста:

rsync -опции /исходная_директория/ имя_пользователя@адрес:директория_назначения

После запуска команды потребуется ввести пароль в консоль.

Пример:
Синхронизация в обе стороны:

Синхронизация по крону

Чтобы автоматизировать процесс синхронизации, можно сгруппировать все команды rsync в файле sync.sh и поместить его в корневой директории хостинга и запускать его по крону раз в три часа.

При работе с удалёнными хостами по SSH потребуется настроить авторизацию по ключу.

C#-копирование файлов — из папки в папку-только новые файлы (например, синхронизация) — идея

может ли кто-нибудь помочь мне с кодом в C#, что мне нужно, так это программа, которая копирует файлы из foder в папку, как синхронизация, но без удаления их, если в первой папке они удалены. Например, первая папка-это папка «source», а вторая-папка «destination».

Например, моя папка «source» — это папка синхронизации фотографий с iCloud. Там есть фотографии, и моя программа копирует все файлы из него в папку назначения. Но если я удалю фотографию или фотографии из источника, чтобы не синхронизировать ее с папкой назначения. Если в источнике есть новая фотография, которую нужно скопировать в папку dest. Идея состоит в том, чтобы иметь все фотографии с моего телефона в папке destionation. Я не могу иметь их в исходной папке, потому что если я удаляю фотографию с телефона, она синхронизируется с папкой, а затем удаляется из исходной папки. И я не хочу каждый раз копировать новые фотографии из папки в папку. Просто небольшая программа, которая проверяет, есть ли новые фотографии, которых нет в папке назначения, и копирует их в нее.

Читайте так же:
Программа для синхронизации blackberry с mac

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

2 ответа

  • копирование файлов из папки в новую папку

Я создаю скрипт для создания папки и копирования всех текстовых файлов из указанной папки на локальном компьютере в новую папку. У меня есть папка create a, но я не уверен, как скопировать все текстовые файлы из папки в новую, которую я создал $destDir = Read-Host -Prompt ‘Please enter the new.

Я пытаюсь переместить все файлы из папки в папку SFTP, используя скрипт shell для моего пакетного задания. Но каждый раз, когда он запускается, перемещается только несколько файлов. Не все файлы. /usr/local/bin/expect -c spawn sftp -o Identityfile=/export/home/user/.ssh/example.ppk.

Вот обновленный код. Я сделал небольшое исправление,изменив обработчик событий с «Changed» на «Created», проверил, существует ли файл, а также применил обработку ошибок, чтобы проверить, доступен ли файл, прежде чем пытаться получить к нему доступ.

Проблема в том, что файл в месте назначения (резервная копия) уже существует.

Используйте эту версию File.Copy(sourceFileName As String, destFileName As String, overwrite As Boolean) ( https://msdn.microsoft.com/en-us/library/9706cfs5(v=vs.110).aspx ) с параметром перезаписать на true , и все будет в порядке. Версия, которую вы используете, имеет перезапись на false, поэтому она создает исключение, когда файл уже существует.

  • Организация и копирование файлов в новые папки

Я пытаюсь упорядочить некоторые данные перед их обработкой. То, что у меня есть, — это папка необработанных TIFF-файлов (это растровые полосы от датчика дрона). Я хочу переместить эти файлы в новые отдельные папки, например, IMG_001_1, IMG_001_2, IMG_001_3, IMG_001_4 и IMG_001_5 все они.

В начале моего сценария shell у меня есть цикл FOR для сканирования папки, чтобы увидеть, есть ли там какие-либо файлы, если да, то мне нужно обработать каждый из них. Процесс для каждого файла займет некоторое время (скажем, несколько минут) в зависимости от того, сколько файлов находится в.

Похожие вопросы:

Я пробую очень простой пакетный скрипт, но, должно быть, упускаю что-то очевидное. Идея состоит в том, чтобы скопировать все файлы из исходной папки и из ее подпапок в одну целевую папку. Как.

У меня есть скрипт, который копирует файлы из одной структуры папок в другую папку с другой структурой. ex. Folder 1 c.txt d.txt subdir1 a.txt b.txt Скрипт копирует файлы / dirs из папки 1 в папку.

Я хочу, чтобы скопировать некоторые файлы в папку назначения с использованием основных java. Я не могу использовать JDK 7. Я использую JDK 1.6. Копирование всей исходной папки в папку назначения.

Читайте так же:
Программа для регулировки скорости кулера материнской платы

Я создаю скрипт для создания папки и копирования всех текстовых файлов из указанной папки на локальном компьютере в новую папку. У меня есть папка create a, но я не уверен, как скопировать все.

Я пытаюсь переместить все файлы из папки в папку SFTP, используя скрипт shell для моего пакетного задания. Но каждый раз, когда он запускается, перемещается только несколько файлов. Не все файлы.

Я пытаюсь упорядочить некоторые данные перед их обработкой. То, что у меня есть, — это папка необработанных TIFF-файлов (это растровые полосы от датчика дрона). Я хочу переместить эти файлы в новые.

В начале моего сценария shell у меня есть цикл FOR для сканирования папки, чтобы увидеть, есть ли там какие-либо файлы, если да, то мне нужно обработать каждый из них. Процесс для каждого файла.

Предполагая, что у меня есть 3 папки с большим количеством файлов в каждой, я хочу выбрать только несколько файлов из каждого подкаталога и вставить только эти файлы в новую папку. Давайте назовем.

Ищу, чтобы скопировать все файлы с расширением *. cpp в подпапках development в новый каталог. Например, C:source имеет 10 папок с именами от A1 до A10. Каждая папка имеет подпапки, такие как.

Я тестирую идею скопировать все файлы с расширением .yaml из одной папки (и всех подпапок) в другую папку. Я придумал код ниже. import os import shutil src =.

RealSync — односторонняя синхронизация исходников в реальном времени для веб-разработчиков

Представляю общественности утилиту RealSync (GPL). Ее призвание — облегчить работу тех, кто периодически мучается от лагов сетевой папки Samba при поиске/редактировании файлов веб-проекта. Идея RealSync в том, что вы теперь работаете с файлами сайта на локальной машине в привычной IDE, а результат, как и прежде, смотрите на удаленном разработческом веб-сервере, куда RealSync копирует изменения в реальном времени. В результате вы можете, например, запустить поиск по всем файлам в IDE — они же локальные, а не подключены через сетевую папку по Samba, так что поиск работает очень быстро; при этом ваш Ctrl+S продолжает попадать на сервер моментально, как и при работе через сетевую папку.

RealSync — утилита для Windows, MacOS и Linux, позволяющая в реальном времени содержать на удаленном сервере точную копию файлов (например, скриптов на PHP, Python, Ruby и др.) из папки на вашем локальном компьютере, даже в условиях плохой связи, когда вы работаете из дома. Все изменения, производимые в локальной папке, попадают на сервер практически моментально (задержка около 0.2 с), независимо от того, сколько этих изменений и каким именно образом они были внесены (хоть через IDE, хоть через Блокнот или Far).

Главное отличие RealSync от аналогов — в том, что он крайне устойчив к нестабильности интернет-соединения, реконнектам и тайм-аутам. При этом используется SSH-соединение, доступ через которое конфигурируется автоматически при первом запуске утилиты (т.е. не нужно возиться с ключами — настройка производится в интерактивном режиме).

Фактически, случайно «убить» RealSync почти невозможно. Вы можете держать его постоянно свернутым в трее и забыть про его существование (CPU он почти не ест). Если утилита видит, что соединение разорвалось на длительный срок, автоматически запускается знакомый многим алгоритм RSYNC для быстрого копирования большого количества различий. В режиме же реального времени применяется собственный протокол поверх SSH, чтобы при нажатии Ctrl+S в редакторе вы сразу же видели изменения на сервере. Передача файла сопровождается приятным «треньканьем» (отключаемым при необходимости в конфиге), а временная потеря связи — покраснением иконки (когда связь восстановится, иконка обратно станет серой, а RealSync «догонит» накопившиеся изменения).

Читайте так же:
Как синхронизировать s health и google fit
И зачем этот велосипед, когда есть Samba или Денвер или XAMPP?

Вообще говоря, существует несколько способов вести разработку веб-скриптов. Первый способ — использовать локальный веб-сервер. У данного метода есть как масса преимуществ (больший контроль, улучшение переносимости и кроссплатформенности и т.д.), так и масса недостатков, как то: потенциальное отличие конфигурации локального сервера от конфигурации дев- и продакшен-зон, необходимость либо следить за синхронностью локальной SQL-базы, либо ждать, пока тормозит доступ к единой дев-базе по интернету и т.д. Мы не будем в данной статье рассматривать этот метод, хотя он, безусловно, имеет право на жизнь (и, как минимум, применяется 1 миллионом зарегистрированных пользователей того же Денвера).

Второй способ — использовать веб-сервер, установленный в офисе компании (или на тестовой машине в датацентре), обслуживаемый штатными админами. На таком веб-сервере может быть несколько директорий, по одной для каждого разработчика. Каждый программист ведет работу в своей директории, чтобы не мешать другим, и смотрит результат на своем поддомене (или на своем номере порта). Вот этот способ мы и рассмотрим.

Использование удаленной папки для веб-разработки
  1. Для сносной скорости работы вы должны находиться в той же локальной сети, что и сервер.
  2. Но даже в этом случае вам будет довольно затруднительно запустить поиск по всем файлам большого проекта в IDE — слишком большая задержка.
  3. В случае разрыва соединения (или же вы не дай бог работаете из дома через интернет) — будьте готовы к странным эффектам и неприятным лагам.

Есть еще, конечно, любители работать в VIM в SSH-консоли прямо на сервере; я их уважаю, но вряд ли когда примкну к их лагерю: все-таки удобства, предоставляемые хорошей графической IDE, для меня перевешивают.

По большему счету RealSync — это решение проблемы скорости работы IDE
  1. Почти все IDE поддерживают передачу измененного файла (по FTP или SSH) на удаленный сервер при нажатии Ctrl+S. Но только здесь две проблемы. Во-первых, вы не сможете изменять файлы «мимо» IDE (например, сделать git pull из командной строки на локальной машине). Во-вторых, если вы на несколько дней исчезнете из реальности интернета, а потом вернетесь с измененными файлами, IDE уже не сможет определить, какие файлы изменились (особенно если они еще случайно и на сервере поменялись почему-то независимо от вас), и в лучшем случае начнет полное копирование, что займет полчаса.
  2. Запустить в вечном цикле RSYNC. Это более-менее работает, когда проект не очень большой, когда интернет хороший и когда вы сидите НЕ на Windows (в Windows RSYNC весьма медленный при запуске). Во всех остальных случаях будьте готовы к 2-3-секундным задержкам.
  3. Использовать специальную утилиту синхронизации, такую как RealSync, Unison, WinSCP и т.д.
Читайте так же:
Программа для синхронизации lenovo a800 с пк
А если мне нужна двусторонняя синхронизация?

Это очень популярный вопрос, связанный с тем, что RealSync всегда затирает любые изменения, производимые напрямую в папке на сервере (если не сразу, так при очередном реконнекте точно). Только изменения в локальной папке имеют смысл и приоритет.

  • Вы хотите работать, например, с Git в консоли на сервере? Но зачем? Ведь можно поставить Git на свою машину и пользоваться всеми преимуществами локальной работы и разными GUI для Git.
  • Ваши скрипты пишут в какую-то локальную папку в рамках директории документов? Добавьте эту папку в исключения RealSync (это делается легко, одной строчкой в конфиге или при самом первом запуске). К тому же делать директорию документов доступной для записи скриптами — это антипаттерн.
  • Вы работаете на ноутбуке дома и на другом десктопе — на работе и хотите синхронизировать файлы через папку веб-сервера? Но ведь веб-сервер — это не средства синхронизации и контроля версий. Используйте лучше Dropbox или коммитьте в систему контроля версий.
  • Вы активно используете симлинки в рабочей копии на сервере? Ну… а не пробовали перестать их использовать, это как минимум упростит поддержку и развертывание в будущем?
Установка RealSync и первый запуск

Все достаточно просто: сначала нужно скачать RealSync и скопировать его куда-нибудь, а затем где-то (в Автозагрузке или на Рабочем столе) разместить ярлык со следующей командной строкой:

При первом запуске вы получите примерно такое окно, в котором нужно будет в интерактивном режиме ввести адрес сервера, ваш SSH-логин и пароль на нем (пароль запрашивается исключительно процессом SSH и не сохраняется на локальной машине, см. ниже), имя папки на удаленном сервере и т.д.

Остальные настройки конфигурации запишутся в файл ПолныйПутьДоВашейПапкиИсходников/.realsync, так что при следующем запуске уже никаких вопросов задано не будет, а просто запустится синхронизация, и программа свернется в трей (для Windows).

Теперь можно править любые исходники и убеждаться, что они моментально попадают на сервер. Если кликнуть на иконку запущенного RealSync в трее, то процесс работы можно наблюдать примерно вот в таком окне:

Итак, RealSync висит в трее, вы его никогда не выключаете, поэтому у вас возникает полная иллюзия, что вы работаете на локальной машине с удаленной папкой. При этом вы имеете все преимущества производительности локального поиска и работы с IDE. Вот это и была цель разработки RealSync.

Буду рад, если утилита сделает еще чью-нибудь повседневную работу легче. Комментарии приветствуются. Проект на GitHub-e: dklab_realsync.

Nextcloud — синхронизация без подтверждения на стороне клиента

доброго времени суток. Внедрил в офисе nextcloud. На стороне клиента на xubuntu поставил nextcloud клиента. Настроил синхронизацию. Вопрос: как настроить клиента, что если в на сервере произошло изменение, к примеру, удалили файл, то БЕЗ подтверждения это удаляется на стороне клиента?! Везде вроде поискал, найти такого не могу.

Читайте так же:
Регулировка звука на панели компьютера

WebDav не лучше будет настроить ?
А то не вижу смысла хранить одни и те же данные в офисе два раза.

Арч, клиент версии 2,3,3 по умолчанию желаемое тобой поведение.

Вообще пару статей читал про это. А синхронизировать можно каталоги? или это отдельно как-то? Что привлекает в nextcloud, что приложение под android уже готовое есть.

У меня так и работает. клиент owncloud версия 2.4.1, nextcloud 14.0.3

Он наверно имел в виду что под линем не нужно никаких клиентов, большинство фм может открывать WebDav. Прочитай про WebDav короче.

Статейку не укажите по настройке arch?

Win 10 — желаемое тобой поведение из коробки.

Да какие статьи, просто установил клиент и в нем залогинился.

Ок, попробую его

Спасибо. Щас посмотрю, что больше приглянется)))

У меня тоже по дефолту файл сам удаляется, после его удаления с сервера.

а какой клиент у тебя?

Еще читал, чтобы на своем серваке дважды не хранить файлы, можно использовать seafile. Хранилище будет просто определяться как диск.

Можно, работает хорошо, но мне не нравится пару моментов:
— страшненькая админка
— файлы хранятся в чанках, т.е. в случае чего, откатывать из бэкапа придётся весь сервак, а не отдельные файлы.

Чекнул OC 2.5.0, все работает так же, даже если использовать эксперементальные виртуальные файлы

Поставил owncloud 2.4.1, nextcloud 13.0.7. Ситуация не изменилась, синхронизации на клиенте с подтверждением, если на серваке удаляем. Может где-то галочки особые надо поставить?))) Вроде все вкладки просмотрел

У меня с настройками по-умолчанию всё работает: скрин

Может тебе попробовать удалить профиль клиента?

Не пойму ничего. Уже даже обновил сам nextcloud до 14.0.3, хотя проблема конечно в клиенте. Уже профиль почистил. все-равно как удалишь так запрашивает. (

а чего не поставишь nextcloud клиента ?

Так с него и началось все. Смотрите что я выяснил, это сообщение выскакивает только тогда когда я удаляю последний файл, т.е. 5 файликов в директории, удаляю 4, без подтверждения, а на 5 — сообщение))) Выяснил эмпирическим путем. Да, кстати, с nextcloud думаю тоже самое.

Да, nextcloud-client работает точно также))

Возможно пора задуматься о багрепорте?

Тогда и правда лучше багрепорт отправить.

Можно, работает хорошо, но мне не нравится пару моментов:
— страшненькая админка

Ну не настоль уж и страшная.

— файлы хранятся в чанках, т.е. в случае чего, откатывать из бэкапа придётся весь сервак, а не отдельные файлы.

Это да. Реальный минус. Мне однажды пришлось раскатывать бэкап из-за того что случайно у пользователя вынес кучу файлов хз на сколько гигов. Пришлось на отдельной тачке разворачивать полный бэкап всего хранилища, для того что бы достать файлы только одного пользователя.

Из плюсов перед ownclowd мне больше нравиться поведение при конфликтах. Именно ownclowd, когда сравнивал next еще не существовало. Возможно в текущих версиях own или в next поменяли поведение.

В небо, а не может ли быть что файлик в этот момент открыт? И именно поэтому предупреждение.

голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector