none
Получение хэш суммы файлов в Powershell на ftp сервере RRS feed

  • Вопрос

  • Всем привет.

    Помогите пожалуйста с решением проблемы. Есть необходимость выполнять резервные копии файлов на пк и отправлять архив на ftp сервер, но после отправления на сервер, необходимо сверить hash с локальным архивом, что все добралось в целостности. Вот код который у меня архивирует и отправляет файлы, но не знаю как получить хэш сумму на сервере ftp без подключения модуля psftp.

    $dir="C:\temp"
    $ftpM="ftp://myftp.ru/Backup/$name/"
    $ftpC="ftp://myftp.ru/Backup/$name/"
    $user="ftpuser"
    $pass="password"
    $date_today = Get-Date -Format dd.MM.yyyy
    $date = Get-Date
    $mDB = Get-ChildItem -Path 'C:\Program Files\DB\DB' | Copy-Item -Destination C:\temp\cDB -Recurse
    $cDB = "C:\Program Files\DB"
    $m_copy = "C:\temp\DB"
    $destinationM = "C:\temp\MBackup.zip"
    $destinationC = "C:\temp\CBackup.zip"
    [io.compression.zipfile]::CreateFromDirectory($m_copy, $destinationM)
    [io.compression.zipfile]::CreateFromDirectory($cDB, $destinationC)
    Rename-Item 'C:\temp\MBackup.zip' -NewName "C:\temp\MBackup_$date_today.zip"
    Rename-Item 'C:\temp\CBackup.zip' -NewName "C:\temp\CBackup_$date_today.zip"
    $webclient=New-Object System.Net.Webclient
    $webclient.Credentials=New-Object System.Net.NetworkCredential($user,$pass)
    $url=New-Object System.Uri($ftpC+"CBackup_$date_today.zip")
    $webclient.UploadFile($url,$dir+"\"+"CBackup_$date_today.zip")
    $url2=New-Object System.Uri($ftpM+"MBackup_$date_today.zip")
    $webclient.UploadFile($url2,$dir+"\"+"MBackup_$date_today.zip")
    Get-FileHash -Path $dir\CBackup_$date_today.zip -Algorithm MD5 | Select Hash -ExpandProperty Hash  >>C:\temp\hash_cdb_$date_today.txt 
    Get-FileHash -Path $dir\MBackup_$date_today.zip -Algorithm MD5 | Select Hash -ExpandProperty Hash  >>C:\temp\hash_mdb_$date_today.txt
    Remove-Item -Path "C:\Temp\MBackup_${date_today}.zip"
    Remove-Item -Path "C:\Temp\CBackup_${date_today}.zip"

    Список файлов получаю следующим кодом:

    $ftpM="ftp://myftp.ru/$name/"
    $user="ftpuser"
    $pass="password"
    $webclient=New-Object System.Net.Webclient
    $login=New-Object System.Net.NetworkCredential($user,$pass)
    $request = [Net.WebRequest]::Create($ftpM)
    $request.Method = [System.Net.WebRequestMethods+FTP]::ListDirectoryDetails
    $request.Credentials = $login
    $response = $request.GetResponse()
    $reader = New-Object IO.StreamReader $response.GetResponseStream() 
    $reader.ReadToEnd()

    #Буду благодарен любой помощи. В Powershell ещё совсем новичок, но учу с удовольствием.

    16 октября 2017 г. 12:31

Ответы

Все ответы

  • Получить Hash на компьютере:

    Get-FileHash
    #Help => Get-Help Get-FileHash -Full

    на ftp сервере:

    линк

    • Помечено в качестве ответа KazunEditor 19 октября 2017 г. 8:19
    16 октября 2017 г. 13:44
  • Как загружать и отправлять файлы на ftp это понятно, как получить hash файлов именно на ftp. По ссылке указано только как получать список файлов, сортировать, отправлять и получать, но ни слова не сказано о хэше.
    20 октября 2017 г. 6:13
  • ftp протокол довольно примитивный. Получить хеш файлов непосредственно от самого ftp сервера не выйдет. Вы можете закачать файлы с ftp, вычислить хеш и после их удалить.

    Что касается вашей задачи, то вы можете сравнивать файлы по размеру.

    Более подробно про ftp ссылка Там вы найдете список доступных команд, которые можно выполнить на стороне ftp сервера.

    20 октября 2017 г. 7:39