2016-12-25 6 views
1

전 Powershell 및 스크립팅을 처음 접했고 누구든지 도움을받을 수 있다면 정말 고맙겠습니다.마지막 날에 수정 된 파일 압축/압축

설정된 수의 디렉터리에서 매일 변경 사항을 백업하기 위해 다음을 수행하는 PowerShell 스크립트를 만들려고합니다.

  • 최근 24 시간 동안 여러 개의 미리 설정된 위치에서 반복적으로 새로운/수정 된 파일 또는 디렉토리를 찾습니다. zip 파일

  • 에서

  • 압축 모든 결과 항목 내가 첫 번째 비트는 다음과 같은 스크립트를 사용하여 작업을 진행하게 발견 할 수있다

폴더 구조를 유지하면서 :

Get-ChildItem $SRC | Where {$_.PsIsContainer} | foreach-object { 
    Get-ChildItem $_ -Recurse -ErrorAction SilentlyContinue | 
    Where {$_.LastWriteTime -gt (get-date).AddDays(-1).date} | 
    Select FullName, LastWriteTime, Mode | Sort LastWriteTime, Mode 
} >> C:\temp\LastModified-$TimeStamp.log 

나는 주어진 디렉토리를 지퍼로 달기위한 또 다른 스크립트를 가지고있다. 그러나 위의 스크립트 결과를 사용하여 파일을 내가 복사 할 수있는 위치로 복사하거나 t 여기에 각 파일의 폴더 구조를 잃지 않고 어딘가에 파일을 먼저 복사 할 필요없이 zip 파일을 만드는 방법은 무엇입니까?

나는 주어진 폴더를 지울 수있는 다음과 같은 스크립트를 가지고있다. (그러나 나는 어딘가에 파일을 robocopy하지 않는 한 여러 개의 디렉토리를 하나의 zip 파일로 압축해야한다. & robocopy를 어떻게하면 마지막으로 수정 된 파일 만 복사 할 수 있을까? 24 시간)

$Source = 'C:\Users\Downloads\RobocopyLocation\' 
$Destination = 'D:\OneDrive\' 
$TimeStamp = Get-Date -f yyyyMMdd_HHmmss 
$ZipName = "$Destination\$TimeStamp" + '_Backup.zip ' 

Add-Type -Assembly "System.IO.Compression.FileSystem" ; 
[System.IO.Compression.ZipFile]::CreateFromDirectory($Source, $ZipName) 

아래의 스크립트를 실행하면 path 인수가 null이라는 오류 메시지가 표시됩니다.

$F1 = 'C:\Users\Downloads\Folder A' 
$F2 = 'C:\Users\Downloads\Folder B' 
$F3 = 'C:\Users\Downloads\Folder C' 
$SrcFolders = ($F1, $F2, $F3); 
$BackupDrive = "D:\OneDrive" 
$DestFolders = ("$BackupDrive\Folder A", "$BackupDrive\Folder B", "$BackupDrive\Folder C"); 
$Destination = 'C:\Users\SysAdmin\Downloads\PLSWork\' 
$TimeStamp = Get-Date -f yyyyMMdd_HHmmss 
$ZipName = "$Destination\$TimeStamp" + '_Backup.zip ' 
$Option = "{$_.PsIsContainer} | foreach-object { Get-ChildItem $_ -Recurse -ErrorAction SilentlyContinue | Where {$_.LastWriteTime -gt (get-date).AddDays(-1).date} | Select FullName, LastWriteTime, Mode | Sort LastWriteTime, Mode}" 


Foreach ($SrcFolders in (Get-ChildItem $SrcFolders | where $Option)){ 


Add-Type -Assembly "System.IO.Compression.FileSystem" ; 
[System.IO.Compression.ZipFile]::CreateFromDirectory($SrcFolders, $ZipName) 
} 

답변

1

은 라인

$ZipName = "$Destination\$TimeStamp" + '_Backup.zip ' 

$ZipName = "$Destination$TimeStamp" + '_Backup.zip ' 
+0

는 "나는 얻을 오류 메시지가 널 (null) 인 경로 인수에 대해 불평" – 4c74356b41

+0

오류를 게시하시기 바랍니다 수 있습니까? PowerShell이 ​​Null 예외를 던지는 곳을 알아 내야합니다. –

0

와 수정 방법이 뭔가에 대해?

$RootPath = "P:\PSZip\" 
$Folders = (
    "Folder A", 
    "Folder B", 
    "Folder C" 
) 
$BackupFolder = "P:\PSZip\Destination\" 
$Files = @() 

foreach($Folder in $Folders) { 
    $Files = Get-ChildItem ("{0}{1}\" -f $RootPath, $Folder) | Where {$_.PSIsContainer} | ForEach-Object { Get-ChildItem $_.FullName -Recurse | Where { $_.LastWriteTime -gt (Get-Date).AddDays(-1) } } 
    $ZipName = ("{0}{1}\{2}_Backup.zip" -f $BackupFolder, $Folder, (Get-Date -f yyyyMMdd_HHmmss)) 
    Compress-Archive -Path $Files.FullName -DestinationPath $ZipName 
}