首页 > 系统相关 >使用powershell脚本,自动压缩文件夹,实现备份功能

使用powershell脚本,自动压缩文件夹,实现备份功能

时间:2024-06-05 17:32:19浏览次数:34  
标签:脚本 备份 share 任务 文件夹 obsidian ps1 powershell

担心数据丢失?教你3分钟实现自动压缩,备份文件夹。

最近在使用obsidian,想要在多台电脑上访问一个同一个仓库,所以我把obsidian-vault设置在了mac-mini的共享文件夹上。
但是有一个问题,mac-mini上边的硬盘是我的闲置硬盘,随时都可能挂掉。

一、通过脚本自动备份

为了避免obsidian的数据丢失,我搞了个简单的ps脚本来实现自动备份,自动备份Z盘下的obsidian-share文件夹到M盘的备份文件夹中,内容如下:

# 时间戳,作为备份文件的后缀
$timestamp = Get-Date -Format "yyyyMMddHHmmss" 
# 要备份的源文件夹,我要备份obsidian的库
$folderPath = "Z:\obsidian-share\Obsidian-share" 
# 要压缩到的目标文件,我要放到M盘的一个zip中
$destinationPath = "M:\backups\obsidian-share备份\Obsidian-share_$timestamp.zip" 

# 执行压缩命令
Compress-Archive -Path $folderPath -DestinationPath $destinationPath

各位可以根据需求,修改$folderPath$destinationPath的内容。
在powershell中运行以上脚本,即可把obsidian-share文件自动压缩为一个zip。

二、保存为脚本文件ps1

但是每次都要手动输入脚本,太麻烦,所以把它保存为一个ps1文件,然后再创建一个快捷方式,双击即可运行。
1、打开记事本,把上边的脚本粘贴进去
2、保存为"xxx.ps1",如果路径含有中文,记得选择编码为ANSI,不然会出错
3、在默认条件下,powershell不允许运行脚本文件,需要用管理员打开powershell,运行以下内容:

Set-ExecutionPolicy RemoteSigned

然后输入y确认。然后就可以右键xxx.ps1,点击"使用PowerShell运行"即可执行该脚本。

三、创建快捷方式,或计划任务

每次都要右键运行,还是有点麻烦,有两个方案:
A、新建一个快捷方式,填入

powershell.exe -NoExit -File "D:\你的文件夹\xxx.ps1"

这里的-NoExit是为了看看有没有报错,如果没有,可以删掉-NoExit
然后xxx.ps1就是刚才我们保存的ps脚本文件。
之后就可以双击这个快捷方式来运行该脚本。

B、使用“任务计划程序”创建计划任务
手动运行还是麻烦?搞个自动化的。
1、打开任务计划程序
Win + S,搜索“任务计划程序”并打开它。
2、创建基本任务
在任务计划程序的右侧,点击“创建基本任务”。
![[Pasted image 20240605162456.png]]
3、设置任务名称和描述
在“创建基本任务向导”中,输入任务的名称(例如“obsidian自动备份”)和描述,然后点击“下一步”。
![[Pasted image 20240605162533.png]]
4、选择触发器
选择“每天”,然后点击“下一步”。(也可以根据你的需求,每周或者每月执行一次)
![[Pasted image 20240605162615.png]]
5、设置开始日期和时间
选择任务的开始日期和时间(时间我选了每天晚上20:00,因为我的电脑这个时候都是开机状态),然后点击“下一步”。
![[Pasted image 20240605162635.png]]

6、选择操作
选择“启动程序”,然后点击“下一步”。
![[Pasted image 20240605162659.png]]
7、配置程序/脚本
在“程序/脚本”字段中,输入 powershell.exe
在“添加参数”字段中,输入以下内容(根据实际情况填写你的ps1脚本位置):

-File "D:\77513\Desktop\桌面杂物间\backup_obsidian.ps1"

![[Pasted image 20240605162832.png]]
8、完成任务创建
点击“下一步”,查看任务摘要,然后点击“完成”。
![[Pasted image 20240605162856.png]]
之后每天晚上20:00就会自动运行一次备份obsidian-share文件夹的操作。

标签:脚本,备份,share,任务,文件夹,obsidian,ps1,powershell
From: https://blog.csdn.net/Master_Owen/article/details/139476014

相关文章

  • 怎么给文件夹按号码命名?文件夹批量重命名的4个方法
    在我们工作中会积累很多文件夹,或者存储一类信息时也会产生很多文件夹,有时候我们需要把这些文件夹的名称进行编号。因为通过使用数字序号可以准确地描述文件夹的优先级,方便排序和快速定位。可以统一文件夹命名的格式,提高文件管理的效率。而对于文件名和文件UUID有规律的文件,使用......
  • 如何一键提取文件夹下所有文件名?亲测好用的四个方法
    在数字化时代,文件管理和整理成为我们日常工作中不可或缺的一部分。尤其是在处理大量文件时,如何快速有效地提取文件夹下所有文件的名称,成为提高工作效率的关键。本文将详细介绍如何一键提取文件夹下所有文件名,帮助读者轻松应对文件整理的需求。如何一键提取文件夹下所有文件名?......
  • MySQL5.7 通过逻辑备份迁移到GreatSQL注意事项
    一、背景概述在将数据库从MySQL5.7迁移到GreatSQL8.0.32时,由于数据量较小且关注安全性,决定使用mysqldump执行逻辑备份,并将数据导入GreatSQL。但在备份时采用了备份全库(--all-databases)的方式,在导入GreatSQL后,修改用户密码时出现错误。这是因为mysqldump备份时包括了mysql系统......
  • Git 保留空文件夹结构
    假设有如下helloworld项目结构:helloworld|--.git|--.gitignore|--Builds|--WebGL|--iOS|--Android现在有个需求,在上传到github仓库时,只想保留WebGL、iOS、Android文件夹的结构,不想要里面的内容,可以按以下步骤实现分别在WebGL、iOS、Android文件......
  • 【转】[VS] 把.nuget文件夹从C盘移到其它盘
    转自:https://blog.csdn.net/Henry_Wu001/article/details/1358256991、用命令查看缓存文件夹的具体路径:dotnetnugetlocalsall--list会出现大概下面的结果: 其中“global-packages:”开头的这行就是这个缓存的位置。上面的图片中,我的是E盘,是因为我已经移动过了。你看到的......
  • 如何用代码预测由 4 个图片文件夹组成的数组。我需要
    我无法正确显示包含4个图像文件夹的数组的预测结果fromPILimportImage导入cv2导入时间defload_and_preprocess_image(img_path,target_size=(112,112)):try:img=Image.open(img_path)img=img.resize(target_size)img_array=np.arr......
  • Linux 修改文件和文件夹权限
    在Linux中,你可以使用chmod命令来修改文件和文件夹的权限。chmod命令用于更改文件和目录的访问权限,即控制谁可以读取、写入和执行文件。以下是在Linux中修改文件和文件夹权限的基本方法使用数字表示法修改权限使用数字表示法来设置文件或文件夹的权限。数字表示法使用三个......
  • 02windows系统查看当前目录下文件夹大小
      #运行powershell复制下面命令执行Get-ChildItem-Directory|ForEach-Object{$folder=$_$totalSize=(Get-ChildItem-Path$folder.FullName-Recurse|Measure-Object-PropertyLength-Sum).Sum$sizeInGB="{0:N2}"-f($totalSiz......
  • PowerShell
    目录确定当前PowerShell版本PowerShell命令参考命令行Shell脚本语言自动化平台配置管理PowerShellMarkdown最佳做法PowerShell相关学习模块PowerShellcmdlet使用cmdlet探索PowerShell谓词使用Get-Command查找命令根据名称筛选根据名词和谓词进行筛选使用帮助程序cmdlet......
  • PowerShell 来操作 Windows 防火墙,实现网络访问控制和防火墙规则的设置。下面是一些常
    PowerShell来操作Windows防火墙,实现网络访问控制和防火墙规则的设置。下面是一些常见的PowerShell命令,用于创建阻止特定类型文件传输协议的规则和限制电子邮件附件的规则:阻止FTP传输协议:powershellCopyCodeNew-NetFirewallRule-DisplayName"BlockFTP"-DirectionOu......