Автозагрузка файла по FTP по его изменению

Существуют ли программы позволяющие следить за файлами, и автоматически загружать их на сервер если они изменились? Все что нашел в интернете не делает это должным образом.
  • Вопрос задан
  • 4820 просмотров
Пригласить эксперта
Ответы на вопрос 4
@YourChief
на линуксе есть inotify, с помощью которого это можно реализовать в пару строк. и, кажется, есть интерфейсы к этой либе, в виде системных утилит. на винде, наверное, это какие-то хуки
Ответ написан
ntkt
@ntkt
Потомственный рыцарь клавиатуры и паяльника
На PowerShell (стоит по дефолту на Win 7) это примерно так (поскреб по сусекам и тупо в лоб, так что лучше потестить :) ):

Юзаем два дотнетовских класса — System.IO.FileSystemWatcher и System.Net.WebClient.
Подписываемся на соотв. события ФС, из деталей события достаем имя файла и заливаем его при помощи WebClient. WebClient умный, его потом можно легко переделать для SFTP.

#
# Watch for files in $watchDir that a match a filer $watchFilter
#    and upload them to FTP $ftpUrl when they are changed (modified)
#

$ftpUrl = "ftp://username:password@example.com/pub/incoming/"
$watchDir = "b:\temp"
$watchFilter = "*.txt"

function uploadFile($fullFileName)
{
    $webclient = New-Object System.Net.WebClient
    $fileName = [system.io.path]::GetFileName($fullFileName)
    $fileUrl = $ftpUrl+$fileName
    $uri = New-Object System.Uri($fileUrl)
    try
    {
        $rc = $webclient.UploadFile($uri, $fullFileName)
    }
    catch [System.Net.WebException]
    {
        Write-Host "[ERR]: "$_
        return
    }
	Write-Host "Uploaded $fullFileName"
}

$watcher = New-object System.IO.FileSystemWatcher $watchDir
$watcher.EnableRaisingEvents = $true
$watcher.Filter = $watchFilter

$changed = Register-ObjectEvent $watcher "Changed"  -Action {
    Write-Host $eventArgs.ChangeType, $eventArgs.Fullpath
    uploadFile $eventArgs.Fullpath
}

while($true) {
    echo "."
    start-sleep -s 5
}

# EOF
Ответ написан
Комментировать
nnCron + скрипты (cmd/python/autoit/...) + консольный ftp-клиент
Ответ написан
Комментировать
@Kozitsyn
Авто-загрузка файлов (авто-бэкапов, архивов и не только) на FTP с контролем удаления последних файлов. Надежная защита от вирусов-шифровальщиков, случайного удаления свежих файлов, повреждения жесткого диска.
https://backupfilestoftp.1s-programmist-expert.ru
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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