技术分享
使用PowerShell实现自动备份文件夹
2020-09-27
使用Powershell实现自动备份文件夹。
1.将多个文件夹,备份到同一个路径下。
将如下代码保存为.ps1文件,右键点击“使用PowerShell运行”。备份时会在DESTINATION_HOME下生成一个格式为yyyyMMdd(当前日期)的文件夹(如果该文件夹不存在的话),然后将所要备份的文件夹复制进yyyyMMdd文件夹。其中-Force参数的含义是强制覆盖yyyyMMdd文件夹中已存在的同名文件。
#Source_Path是数组类型,其中保存的是需要备份的文件夹路径,即源路径。 $Source_Path="C:\Path1","C:\Path2","C:\Path3" #DESTINATION_HOME中保存的是要备份到的文件夹路径,即目标路径。 $DESTINATION_HOME="D:\Back_up_daily" $Destination_Path=$DESTINATION_HOME+"\"+(Get-Date).ToString("yyyyMMdd") #检测目标路径是否存在,如果不存在则新建目标路径。 if (!(Test-Path -Path $Destination_Path)) { New-Item -ItemType directory -Path $Destination_Path } #进行复制 foreach($Path in $Source_Path) { Copy-Item -Path $Path -Destination $Destination_Path -Recurse -Force }
以上代码,实现的是将多个文件夹备份到同一路径,有新的文件夹需要备份额时,只需在$Source_Path数组中添加新的值即可。修改、删除,同理。
2.将多个文件夹,备份到多个路径下。
根据上边的代码,再建立几个PowerShell文件,然后将其中的DESTINATION_HOME的值修改一下。有几个目标路径,就建立几个PowerShell文件。
3.自动化运行所有的PowerShell文件。
将所有这些PowerShell文件,假设有test1.ps1,test2.ps1,test3.ps1这三个文件,放在同一个文件夹下,然后在该文件夹下再建立一个PowerShell文件,假设名为all-in-one.ps1,然后在all-in-one.ps1中输入如下命令,保存。以后只需要运行all-in-one.ps1这一个文件即可。把all-in-one.ps1新建快捷方式放到桌面上,每天睡觉前运行一次即可。
PowerShell test1.ps1 PowerShell test2.ps1 PowerShell test3.ps1
4.根据路径是否存在,智能运行PowerShell文件。
举例如下:
需求:如果没有插入移动硬盘,就只备份到本机的另一个目录,否则就在移动硬盘中也备份一份。
方法:首先为了避免插入其他设备时进行不必要的备份,首先插入需要备份到的那个移动硬盘,然后在管理工具-计算机管理-磁盘管理中,将移动硬盘的盘符设置为比较靠后的盘符,假设设为O盘,则此后在该电脑上,每次移动硬盘插入时会自动识别为O盘。此时all-in-one.ps1文件中的代码如下:
$drive="O:\" PowerShell test1.ps1 PowerShell test3.ps1 if (Test-Path -Path $drive) { PowerShell test2.ps1 }判断路径是否存在,既可以判断目标路径,也可以判断源路径。
目前仅仅只是复制,其实还可以压缩。

- 标签:
-
技术分享