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

[wpdm_file id=4]

Veröffentlicht in Scripting, Windows PowerShell und verschlagwortet mit , .

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert