<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Воронин: заметки с тегом ftp</title>
<link>https://voronin.one/tags/ftp/</link>
<description>воронин, voronin, it</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.4 (v4171)</generator>

<itunes:subtitle>воронин, voronin, it</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>синхронизация ftp synology</title>
<guid isPermaLink="false">26</guid>
<link>https://voronin.one/all/sinhronizaciya-ftp-synology/</link>
<pubDate>Fri, 22 Apr 2022 17:04:28 +0300</pubDate>
<author></author>
<comments>https://voronin.one/all/sinhronizaciya-ftp-synology/</comments>
<description>
&lt;p&gt;Был неприятно удивлен тем, что в новой DSM 7 нет больше возможности подключать удаленные папки по протоколу FTP. Ну, это нас никогда не останавливало, накатаем скрипт синхронизации папок по расписанию.&lt;/p&gt;
&lt;p&gt;Вы скажете «стоп» — это совершенно разные вещи, а я отвечу, наши подрядчики придумали синхронизацию по расписанию. И попросили нам это реализовать у себя.&lt;/p&gt;
&lt;p&gt;Их вариант подразумевал использование WinSCP &lt;a href="https://winscp.net/."&gt;https://winscp.net/.&lt;/a&gt; Мы же используем клиент lftp, который есть на борту Synology.&lt;/p&gt;
&lt;p&gt;создаём sh файл&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash

USER=&amp;quot;user_login&amp;quot;
HOST=&amp;quot;ftp_server_address&amp;quot;
PORT=&amp;quot;ftp_server_port&amp;quot;
LCD=&amp;quot;/volume1/полный/путь/к/папке/с/проектом&amp;quot;# путь к папке на нашем локальном сервере
RCD=&amp;quot;путь/к/удаленной/папке&amp;quot;# путь к папке на ftp сервере

# удаленную папку синхронизируем к нам
cd &amp;quot;$LCD/OUT&amp;quot;
lftp $USER:&amp;#039;P@$$W0RD&amp;#039;@$HOST:$PORT -e &amp;quot;set file:charset utf8;set ftp:charset utf8; cd $RCD/OUT; mirror --continue --delete --verbose; exit;&amp;quot;

# нашу папку синхронизируем на сервер
cd &amp;quot;$LCD/IN&amp;quot;
lftp $USER:&amp;#039;P@$$W0RD&amp;#039;@$HOST:$PORT -e &amp;quot;set file:charset utf8;set ftp:charset utf8; cd $RCD/IN; mirror --continue --reverse --delete --verbose; exit;&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;предположим, что на удалённом сервере папку OUT надо синхронизировать с локальной папкой OUT, а локальную папку IN c удалённой IN.&lt;/p&gt;
&lt;p&gt;К локальной папке лучше использовать полный путь, т. к. вы будете запускать по расписанию, то можете прописать путь относительно домашней папки пользователя от имени которого выполнится скрипт.&lt;/p&gt;
&lt;p&gt;ЗЫ Почему я пишу пароль прямо в строку подключения? Потому что передать через переменную мне не удалось, возможно из-за спецсимволов в пароле. Я не стал париться, мой метод работает.&lt;/p&gt;
&lt;p&gt;PS 25.07.2022 — добавил charset «set file:charset utf8;set ftp:charset utf8;» иначе может неверно работать с кириллицей&lt;/p&gt;
</description>
</item>


</channel>
</rss>