Linux VPS Server Backup von einem Windows Client

Linux VPS Backup

F√ľr meinen VPS Server habe ich nach einer g√ľnstigen Backup-Methode gesucht, um den Ubuntu Server zu sichern. Das einfachste ist nat√ľrlich die Backup-Methode √ľber den ISP Anbieter. Die Backup-L√∂sung des Anbieters kostet jedoch zus√§tzlich Geld. Wenn man sich das Geld sparen m√∂chte, muss man sich eben selbst um die Datensicherung k√ľmmern. Dazu bietet es sich aus von seinem bestehenden Windows Client das Linux VPS Server Backup per Powershell Script erstellen zu lassen.

Werbung

Da ich keine zeitlich kritischen Daten auf dem VPS Server habe, brauche ich auch kein Backup, das sich im Ausfall schnell Wiederherstellen l√§sst. Eine Sicherung √ľber das Dateisystem damit alle Website Daten gesichert sind. Eine Sicherung √ľber die SQL Dumps der MariaDB Datenbank und eine Sicherung √ľber die Config Files reichen mir vollkommen aus. Es gibt mehrere Methoden die Sicherung sauber per Script umzusetzen. Die erste Methode ist ein Script mit rsync und cygwin. Eine andere Methode ist mit bestehenden Werkzeugen zu arbeiten, n√§mlich mit PowerShell.

Das Script ‚Äď Linux VPS Server Backup¬†

Das Script benötigt eine DLL von WinSCP um sich mit dem VPS Server zu verbinden. Installieren Sie WinSCP um die DLL nutzen zu können. Passen Sie anschließend die Verbindungsdaten im PowerShell Script an und das Script nutzen zu können. Passen Sie auch das Zielverzeichnis zum abspeichern der gesicherten Daten an, wenn Sie kein D:\ Laufwerk haben.

# ===============================================================================
# 	Author: Griep Marco
# 	Description: Backup of an Remote Server via SSH
#   Todo: Change the Connection Credentials in the sessionOptions
# ===============================================================================

$shutdown = Read-Host "Shutdown after Backup?"

try
{
    # Load WinSCP .NET assembly
    Add-Type -Path "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"

    # Setup session options
    $sessionOptions = New-Object WinSCP.SessionOptions -Property @{
        Protocol = [WinSCP.Protocol]::Sftp
        HostName = "1.2.3.4" # Hier die IP von VPS eintragen
        UserName = "root"
        Password = ""
        SshHostKeyFingerprint = "ssh-ed25519 256 1234567890fskdjflsdjfklsjdfkjsdkfjl="
    }

    $session = New-Object WinSCP.Session

    try
    {
        # Connect
        $session.Open($sessionOptions)

        # Download files
        $transferOptions = New-Object WinSCP.TransferOptions
        $transferOptions.TransferMode = [WinSCP.TransferMode]::Binary

        Write-Host "Transfer HTML Files. Please Wait"

        $transferResult =
            $session.GetFiles("/var/www/html*", "D:\BackupVPS\*", $False, $transferOptions)

        # Throw on any error
        $transferResult.Check()

        # Print results
        foreach ($transfer in $transferResult.Transfers)
        {
            Write-Host "Download of $($transfer.FileName) succeeded"
        }

        Write-Host "Transfer Apache Config Files. Please Wait"

        $transferResult =
            $session.GetFiles("/etc/apache2*", "D:\BackupVPS\apache2\*", $False, $transferOptions)

        # Throw on any error
        $transferResult.Check()

        # Print results
        foreach ($transfer in $transferResult.Transfers)
        {
            Write-Host "Download of $($transfer.FileName) succeeded"
        }

        Write-Host "I will try to zip all this ship. Please wait"

        $source = "D:\BackupVPS"

        $destination = "D:\$((Get-Date).ToShortDateString()).zip"

         If(Test-path $destination) {Remove-item $destination}

        Add-Type -assembly "system.io.compression.filesystem"

        [io.compression.zipfile]::CreateFromDirectory($Source, $destination) 

        Write-Host "Finished"
    }
    finally
    {
        # Disconnect, clean up
        $session.Dispose()
    }
}
catch [Exception]
{
    Write-Host "Error: $($_.Exception.Message)"
}

if ($shutdown -eq "y") {
    shutdown -s -f -t 0
}



Individuelles Powershell Script gew√ľnscht?

Sie brauchen ein individuelles Powershell Script? Schauen Sie doch mal in meinen Services-Bereich vorbei. Neben meinem Blog biete ich diverse Dienstleistungen rund ums Programmieren und Consulting an. Gerne k√∂nnen Sie mich auch einfach per E-Mail kontaktieren: griepmarco@protonmail.com oder √ľber das Kontaktformular



Kommentar verfassen