1. 程式人生 > >使用PowerShell壓縮備份資料夾

使用PowerShell壓縮備份資料夾

先貼程式碼後解釋。

#作者:張瑞森
#版本號:2.0.20160811
#日期:2016.08.11

#設定7-zip.exe的檔案路徑
[String]$zip = "C:\Program Files\7-Zip\7z.exe"

#設定壓縮檔案的名稱
[String]$name = "OneNote.7z"

#設定需要備份的檔案或者資料夾的路徑
[String]$path = "E:\JianGuoYun\OneNote"

[String]$temp = "$($env:TMP)\$((Get-Date).ToString("yyyyMMddHHmmss"))"
New-Item -ItemType Directory -Path $temp
cd $temp
& $zip a $name $path

if ($?)
{
	#設定備份路徑
	[String]$destinationPath = "$($HOME)\Documents\Back_up_daily\$((Get-Date).ToString("yyyyMM"))\$((Get-Date).ToString("yyyyMMdd"))"

	if (!(Test-Path -Path $destinationPath))
	{
		New-Item -ItemType Directory -Path $destinationPath
	}

	Copy-Item $name $destinationPath -Force
	
	if (Test-Path -Path "O:\")
	{
		#設定O盤中的備份路徑
		[String]$destinationPathO = "O:\Back_up_daily\$((Get-Date).ToString("yyyyMM"))\$((Get-Date).ToString("yyyyMMdd"))"

		if (!(Test-Path -Path $destinationPathO))
		{
			New-Item -ItemType Directory -Path $destinationPathO
		}

		Copy-Item $name $destinationPathO -Force
	}	
}

cd $HOME
Remove-Item $temp -Recurse

以上是我電腦中實際執行著的指令碼。可以複製之後直接用,只需修改有註釋的那幾個地方的變數內容,把路徑改一下就好。

想法是,首先壓縮到系統的%TMP%資料夾,如果壓縮成功,則將壓縮好的檔案再複製到個人的文件資料夾(雖然中文版上顯示的是文件,但是實際上是英文的Documents)下用來備份。如果檢測到已連線到專用的外接儲存裝置(為了避免連線其他裝置時錯誤備份到其中,將專用的外接儲存裝置的碟符修改為比較靠後的,平時根本用不到的碟符。從而檢測到該碟符即可認為是連線了專用的那個外接儲存裝置),則也複製一份過去。

不採取增量備份,每次備份時都備份全部檔案,通過壓縮來減少佔用空間,同時不刪除過去的備份檔案。現在的硬碟極其便宜,足以支援如此備份。

需要在電腦上先安裝好7-zip。然後設定好7-zip的安裝路徑、需要備份的資料夾路徑、將需要備份的資料夾壓縮之後得到的壓縮檔案的名稱。

在系統的%TMP%資料夾下新建一個以當前系統時間為名稱的資料夾,以“年月日時分秒”的格式來命名,應該能保證唯一性。切換到該路徑,將需要備份的資料夾壓縮到該路徑下。

判斷壓縮語句是否執行成功,壓縮成功才進行復制。其中$?的值為true或者false,含義是上一條語句是否執行成功。

在文件資料夾下建立了一個名為Back_up_daily的資料夾,作為總的備份目錄,然後在其中建立了以“年月”為格式的一個資料夾,之後進一步建立了一個以“年月日”為格式的資料夾,用來儲存壓縮好的備份檔案。如果相關的資料夾不存在則建立。

拷貝壓縮檔案時,如果存在同名檔案,則一定是當日備份的,採取強制覆蓋方式,替換掉當日已經存在的壓縮檔案。

判斷專用的外接儲存裝置是否存在,存在則複製一份過去,不存在就跳過。

當所有該複製的檔案都複製完畢之後,切換到其他的路徑,然後刪除%TMP%資料夾中所建立的臨時資料夾。

以上是一個資料夾,生產一個壓縮檔案,複製到多個路徑的情況。如果是多個資料夾呢?

那就複製一份上邊的程式碼,略微改一下,再建一個指令碼唄。哪個資料夾修改了,關機前就執行相應的PowerShell指令碼。

原來是全都備份一遍,然而並不是每個資料夾每次都修改了,沒有修改就沒有必要再備份一份。

同樣的還有系統計劃任務的事情,沒必要設定定時任務,每天結束前手動執行一下指令碼即可。

相關推薦

使用PowerShell壓縮備份資料

先貼程式碼後解釋。 #作者:張瑞森 #版本號:2.0.20160811 #日期:2016.08.11 #設定7-zip.exe的檔案路徑 [String]$zip = "C:\Program Files\7-Zip\7z.exe" #設定壓縮檔案的名稱 [String

說說Windows一鍵還原的備份資料

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

centos 7 定時備份資料,增量檔案

#!/bin/bash  #做  #根據專案同重命名該指令碼  #例 amountebak.sh or pandawillsbak.sh  #該指令碼放 $bakpp定義絕路徑部  #$bakpp找相應備份檔案  #例 /usr/backup/amountebak.sh or

java實現上傳zip解壓及判斷壓縮資料功能

直接上Service,通過程式碼看思路貫穿整個功能,很多工具類可以複用,檔案路徑可以去看我部落格裡的(使用ResourceBundle國際化資原始檔讀取properties詳解) 這篇製作方法url:https://blog.csdn.net/qq_17025903/arti

linux 壓縮當前資料下所有檔案

linux zip壓縮。壓縮當前資料夾下所有檔案,壓縮為a.zip。命令列的方法是怎樣。 zip  -r fileName.zip  資料夾名 tar tar命令可以用來壓縮打包單檔案、多個檔案、單個目錄、多個目錄。 常用格式: 單個檔案壓縮打包 tar czvf my.tar file1 多

Linux下壓縮某個資料資料打包)

tar -zcvf /home/xahot.tar.gz /xahot tar -zcvf 打包後生成的檔名全路徑 要打包的目錄 例子:把/xahot資料夾打包後生成一個/home/xahot.tar.gz的檔案。 zip 壓縮方法: 壓縮當前的資料夾 zip -r ./x

C# 利用WinRAR (加密)壓縮及解壓縮 相關資料及檔案 (轉)

http://blog.csdn.net/lundy/article/details/2091416 本次示例主要實現: 1.壓縮資料夾及其下檔案 2.壓縮資料夾下檔案 3.壓縮資料夾及其下檔案為rar 還是 zip 4.解壓縮 5.加密壓縮及解加密壓縮 -------

Powershell 刪除指定資料中的檔案和資料

簡介:我們在日常運維中,經常需要定期清理臨時存放檔案的資料夾,以下使用Powershell刪除指定資料夾下的所有內容。 Powershell程式碼如下: $TargetFolder = "Z:\Test" $Files = get-childitem $Targ

Python | 定時壓縮指定資料傳送郵件

工作中每天需要收集部門內的FR檔案,傳送給外部部門的同事幫忙上傳,這麼發了有大半年,昨天亮光一閃,為什麼不做成自動化呢,於是用python實現了整個流程,今天體驗了一下真是美滋滋。 程式碼如下 首先匯入需要的包 import win32com.

java實現zip壓縮檔案/資料

import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.zip.CRC

Linux 壓縮(打包)資料 tar/zip

tar 壓縮方法: tar -zcvf /home/xahot.tar.gz /xahot tar -zcvf 打包後生成的檔名全路徑 要打包的目錄 例子:把/xahot資料夾打包後生成一個/home/xahot.tar.gz的檔案。zip 壓縮方法: 壓縮當前的資料

利用Powershell 批量建立資料

客戶提到一個需求,是批量的在某個目錄建立一個基於使用者名稱的資料夾。我們通用使用Powershell 指令碼來達到這個目的: 首先我們通過Powershell 命令獲取當前AD中的所有使用者,我們用如下的指令碼達到目的: 我們檢視我們相對應的使用者名稱稱: 我們把檔案

linux下 備份 壓縮,解壓資料,資料庫;

1.壓縮檔案 用xshell 等命令工具,到所要備份的的目錄下, 然後, tar zcvf wenjianjia.tar.gz files 注:紅色字型  可以隨意修改名字,藍色字型 是要備份的資料夾名稱 命令裡面 是有  空格 的,還有 英文  句號. 2

java按照目錄結構壓縮資料以及資料內內容

java按照目錄結構壓縮資料夾以及資料夾內內容 1 package com.basis.utils; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import

zip壓縮/解壓縮帶空資料的檔案

zip壓縮/解壓縮帶空資料夾的檔案 2011年07月21日 20:04:54 flex_work 閱讀數:7152 標籤: filestringbytebuffernullinclude 更多 個人分類: Flex And Java

Java實現zip檔案壓縮(單個檔案、資料以及檔案和資料的組合壓縮

Java實現zip檔案壓縮(單個檔案、資料夾以及檔案和資料夾的組合壓縮) 2016年10月04日 23:22:24 ljheee 閱讀數:13215 標籤: 壓縮javazip 更多 個人分類: Java應用 版權宣告:本文為博

一段批處理, 遍歷資料裡的csv檔案壓縮, 壓縮包的檔名是原始檔名的擷取

echo off SETLOCAL ENABLEDELAYEDEXPANSION set work_path=F:\somefolder F: cd %work_path% for /R %%s in (*.csv) do ( set fname=%%s echo !fname:~-30,

Java解壓縮zip檔案工具類(支援zip資料下多級目錄結構)

文章目錄 Java解壓縮zip檔案工具類(支援zip資料夾下多級目錄結構) 1. 前言 2. 正文 2.1 解壓縮後文件目錄結構展示 2.2 注意事項 2.3 異常

.net壓縮資料

1,引用:using System.IO.Packaging; 2,壓縮檔案的方法: /// <summary> /// 壓縮資料夾到制定的路徑 /// </summary> /// <param name="folderName">要壓縮

壓縮備份資料庫與網站資料(mysql不停止的方法)簡易實用BAT

@echo off::Author: jerry::Date:2018-11-20echo.echo MySQL資料庫及網站程式備份指令碼echo echo Author: jerryecho Date:2018-11-20echo 備份日期:%date%echo 備份時間:%time%echo.echo s