Schlagwort-Archive: FTP

FTP-Backup mit PowerShell, ncFTP und 7-Zip

powershell_logoDas folgende Skript lädt alle Dateien von einem FTP Server herunter und fügt sie zu einem ZIP-Archiv zusammen. Für den FTP-Download wird ncFTP verwendet, da die in Windows integrierte FTP.exe nicht für den Download ganzer Verzeichnis-Hierarchien geeignet ist. Das Komprimieren der Dateien übernimmt 7-Zip.

Damit das Skript funktioniert müssen die Daten im Configuration Part des Skriptes angepasst werden. Um das Skript auszuführen wird die Windows PowerShell benötigt. Information zum Ausführen von PowerShell Skripten gibt es hier. Am Ende des Artikels gibt es einen Downloadlink für das Skript mit allen Binaries.

# BackUP files from FTP Server as ZIP
# Author: Marcus Hottenrott
# GNU GPL
#
#--- Configuration ------------------------------------------

$backupDestination = "D:\FTP_Backup\Backup"
$pathToThisScript = "D:\FTP_Backup"

$ftpHost = "localhost"
$ftpUser = "USERNAME"
$ftpPassword = "PASSWORD"
$ftpFolderToBackUp = "/"
$ftpPort = "21"


#--- Implementation ------------------------------------------

# Path to binaries
Set-Location $pathToThisScript
$sevenZipPath = Get-Item "bin\7z.exe" | Resolve-Path -Relative
$ncFtpGetPath = Get-Item "bin\ncftpget.exe" | Resolve-Path -Relative

# Backup filename
$backUpZipFileName = Get-Date -Format "yyyy-MM-dd-HH_mm_ss"
$BackupZIP = $backupDestination + "\" + $backUpZipFileName

# Create temp folder for downloaded FTP files
$tempFolderForFtpFiles = $env:temp + "\FTP_Backup"
New-Item -Path $tempFolderForFtpFiles -ItemType directory

# Download files from FTP Server
Start-Process  -FilePath $ncFtpGetPath -ArgumentList "-T -R -v -u $ftpUser -p $ftpPassword -P $ftpPort $ftpHost $tempFolderForFtpFiles $ftpFolderToBackUp" -wait

# Zip downloaded files
Start-Process  -FilePath $sevenZipPath -ArgumentList "a -Tzip $BackupZIP $tempFolderForFtpFiles" -wait

# Delete temp folder
Remove-Item -Recurse -Force -Path $tempFolderForFtpFiles

Download Skript

geposted: 11. Oktober 2013 | aktualisiert: 6. Mai 2015 | Autor: Marcus Hottenrott
Kategorie(n): Windows PowerShell