Ftp Senkronizasyonu
-
merhaba arkadaşlar özel bir durumdan dolayı ftp yi her 1 dakikada senkronize etmem gerekiyor daha doğrusu dosyaları alıp silmem gerekiyor winspc ile yerel klasörler güncel tutulsun dediğimde dosyaşarı alıyor ama kaynağı temizlemiyor nasıl yapabilirm
-
çok bir bilgim yok ama okuma yazma izinlerini kontrol ettin mi?
-
ilteris bunu yazdı
çok bir bilgim yok ama okuma yazma izinlerini kontrol ettin mi?
hocam izinle alakalı degil uygulamada öyle bi özellik yok ondan dolayı
-
Aklıma ilk gelen şey şu, Yandex Disk veya Google Drive kurup hedefi de ftpdeki klasör olarak gösterirsen değişiklik olduğu an itibariyle buluta da otomatik atmış olur. Silme işlemi için aklıma gelirse yazaım.
-
ontedi bunu yazdı
Aklıma ilk gelen şey şu, Yandex Disk veya Google Drive kurup hedefi de ftpdeki klasör olarak gösterirsen değişiklik olduğu an itibariyle buluta da otomatik atmış olur. Silme işlemi için aklıma gelirse yazaım.
klasör ana rootun içinde oldugundan yandex gdrive filan görmüyor hocam belki farklı bir yazılımla olabilir .
-
https://winscp.net/eng/docs/scripting
https://stackoverflow.com/questions/38616995/delete-files-older-than-x-days-from-ftp-server-with-powershell-or-batch-file dosya silmek için
Script yazıp halletmen gerekiyor hocam. İnternette benzer scriptleri bulabilirsin.
-
şunu düzenleyebilsem sorun kalkacak orytalıkta
bu alıyor kopyalıyor bide istersen yerel klasörü temizliyor
# @name &Keep Local Directory up to Date...
# @command powershell.exe -ExecutionPolicy Bypass -File "%EXTENSION_PATH%" -sessionUrl "!S" -localPath "%LocalPath%" -remotePath "%RemotePath%" %Delete% %Beep% %ContinueOnError% -interval "%Interval%" -pause -sessionLogPath "%SessionLogPath%"
# @description Periodically scans for changes in a remote directory and reflects them on a local directory
# @version 4
# @homepage https://winscp.net/eng/docs/library_example_keep_local_directory_up_to_date
# @require WinSCP 5.9.2
# @option - -run group "Directories"
# @option RemotePath -run textbox "&Watch for changes in the remote directory:" "!/"
# @option LocalPath -run textbox "... &and automatically reflect them on the local directory:" "!\"
# @option - -config -run group "Options"
# @option Delete -config -run checkbox "&Delete files" "" -delete
# @option Beep -config -run checkbox "&Beep on change" "" -beep
# @option ContinueOnError -config -run checkbox "Continue on &error" "" -continueOnError
# @option Interval -config -run textbox "&Interval (in seconds):" "30"
# @option - -config group "Logging"
# @option SessionLogPath -config sessionlogfile
# @optionspage https://winscp.net/eng/docs/library_example_keep_local_directory_up_to_date#optionsparam (
# Use Generate Session URL function to obtain a value for -sessionUrl parameter.
$sessionUrl = "sftp://user:mypassword;fingerprint=ssh-rsa-xx-xx-xx@example.com/",
[Parameter(Mandatory = $True)]
$localPath,
[Parameter(Mandatory = $True)]
$remotePath,
[Switch]
$delete,
[Switch]
$beep,
[Switch]
$continueOnError,
$sessionLogPath = $Null,
$interval = 30,
[Switch]
$pause
)try
{
# Load WinSCP .NET assembly
$assemblyPath = if ($env:WINSCP_PATH) { $env:WINSCP_PATH } else { $PSScriptRoot }
Add-Type -Path (Join-Path $assemblyPath "WinSCPnet.dll")# Setup session options
$sessionOptions = New-Object WinSCP.SessionOptions
$sessionOptions.ParseUrl($sessionUrl)$session = New-Object WinSCP.Session
# Optimization
# (do not waste time enumerating files, if you do not need to scan for deleted files)
if ($delete)
{
$localFiles = Get-ChildItem -Recurse -Path $localPath
}try
{
$session.SessionLogPath = $sessionLogPathWrite-Host "Connecting..."
$session.Open($sessionOptions)while ($True)
{
Write-Host "Synchronizing changes..."
$result =
$session.SynchronizeDirectories(
[WinSCP.SynchronizationMode]::Local, $localPath, $remotePath, $delete)$changed = $False
if (!$result.IsSuccess)
{
if ($continueOnError)
{
Write-Host "Error: $($result.Failures[0].Message)"
$changed = $True
}
else
{
$result.Check()
}
}# Print updated files
foreach ($download in $result.Downloads)
{
Write-Host "$($download.Destination) <= $($download.FileName)"
$changed = $True
}if ($delete)
{
# scan for removed local files (the $result does not include them)
$localFiles2 = Get-ChildItem -Recurse -Path $localPathif ($localFiles)
{
$changes =
Compare-Object -DifferenceObject $localFiles2 `
-ReferenceObject $localFiles
$removedFiles =
$changes |
Where-Object -FilterScript { $_.SideIndicator -eq "<=" } |
Select-Object -ExpandProperty InputObject# Print removed local files
foreach ($removedFile in $removedFiles)
{
Write-Host "$removedFile deleted"
$changed = $True
}
}$localFiles = $localFiles2
}if ($changed)
{
if ($beep)
{
[System.Console]::Beep()
}
}
else
{
Write-Host "No change."
}
Write-Host "Waiting for $interval seconds, press Ctrl+C to abort..."
$wait = [int]$interval
# Wait for 1 second in a loop, to make the waiting breakable
while ($wait -gt 0)
{
Start-Sleep -Seconds 1
$wait--
}Write-Host
}
}
finally
{
Write-Host "Disconnecting..."
# Disconnect, clean up
$session.Dispose()
}
}
catch
{
Write-Host "Error: $($_.Exception.Message)"
}# Pause if -pause switch was used
if ($pause)
{
Write-Host "Press any key to exit..."
[System.Console]::ReadKey() | Out-Null
}# Never exits cleanly
exit 1 -
https://fullsync.sourceforge.io bi ara bi işte kullanmıştım bi dene istersen