powershell 备份文件脚本

本文介绍了一个使用PowerShell编写的脚本,用于在Windows Server环境中备份指定日期前的文件,并保持原有的目录结构。该脚本接收三个参数:源路径、目标路径及截止日期。

由于项目需要改写备份文件的程序.

(原来的解决方案是用vb6 去遍历文件, 不吐槽了)


需求1: 检查每个文件的修改时间, 如果小于日期参数, 则备份(和删除);

需求2:保留被备份文件的目录结构。


linux下备份文件很简单, 可惜我们只有windows Server。


百度不到。

为了性能花了2小时写了个powershell 脚本...


话说MS的东西跟开源方案比起来基本上都是垃圾。


例如C#比java, windows server 比linux, powershell比bash等等...

1个xargs解决的东西我tmd写了个循环。

mdzz.


$scriptName = "archive.ps1";
if (!($args.count -eq 3)){
  write-host("Usage - " + $scriptName + " <<Source Path>> <<Destination Path>> <<beforeDate>>");
  exit -1;
}

$pathFrom = $args[0];
$pathTo = $args[1];
$dateBefore = [datetime]::ParseExact($args[2],"yyyy-MM-dd",$null);
write-host("source path is: " + $pathFrom);
write-host("destination path is: " + $pathTo);
write-host("archive files whose modified date is before: " + $dateBefore);

if (!((Test-path -path $pathFrom) -and (Test-path -path $pathTo))){
  write-host("source path or destination path is not existed!");
  exit -1;
}

$pathCopyTo = "";
$pathFromLen = $pathFrom.Length;
$LenGap = 0;
$LenGap2 = 0;

ls -r $pathFrom | ?{$_.LastWriteTime -lt $dateBefore } | Foreach-Object{
    $lenGap = $_.FullName.Length - $pathFromLen - $_.Name.Length - 1;
    $pathCopyTo =  $PathTo + $_.FullName.Substring($pathFromLen, $lenGap);

    write-host("copying " + $_.FullName + " to " + $pathCopyTo);
    if(!(Test-path -path $pathCopyTo)){
        write-host("creating folder " + $pathCopyTo );
        mkdir -Pa $pathCopyTo;
    }
    copy-item $_.FullName $pathCopyTo -Force;
}

exit 0;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nvd11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值