让Onedrive云盘同步本地任意一个文件夹(适用于Windows)

本文介绍了如何利用Windows的mklink命令来解决Onedrive只能同步一个文件夹的问题。通过创建符号链接,可以将多个本地文件夹与Onedrive同步。详细步骤包括开启Onedrive的文件自动保存,以管理员权限运行命令提示符,执行mklink命令创建目录链接,从而实现不同目录的文件实时同步到Onedrive。
摘要由CSDN通过智能技术生成

0 前言

购买了Office365家庭版之后试用了一下订阅自带的云盘,充分体会到了Onedrive的潜力。办公文档上云,妈妈再也不用担心系统崩溃文件丢失啦~
office的文件保存在Onedrive上可以进行自动保存
图片:office的文件保存在Onedrive上可以进行自动保存
但问题是,Onedrive的文件只能统一同步到一个文件目录下,而当想要同步的文件目录不止一个的时候就不太方便,因此这里给出一个解决办法:利用mklink语句给待同步的文件目录在Onedrive文件夹下创建映射。

1 关于mklink命令

1.1 简介

NTFS 符号链接又称“符号链接”,是 NTFS 文件系统中指向文件系统中的另一个对象的一类对象,被指向的对象叫做“目标”。mklink 是 Windows 下用于创建符号链接的工具,存在于 Windows Vista 及以后版本的 Windows 操作系统中。

1.2 使用方式

MKLINK [[/D] | [/H] | [/J]] Link Target 

  
  
  • 1

说明:
/D 创建目录符号链接而不是文件符号链接(默认为文件符号链接)
/H 创建硬链接而不是符号链接
/J 创建目录连接点
Link 指定新的符号链接名称
Target 指定新链接引用的路径(绝对路径或者相对路径均可)

1.3 注意

参数 LinkTarget 要求不能使用 Windows 中不允许用作文件名的字符(\ / : * ? " < > |)。并且如果 LinkTarget 这两个参数中需要包含空格,则必须使用英文双引号将内容引起来,以避免参数识别错误。

1.4 限制

符号链接在系统启动的时候是不工作的,所以下面这些文件(夹)是不可以作为符号链接替换的:
\Windows
\Windows\system32
\Windows\system32\config

2 具体操作方法

  1. 打开Onedrive,在右下角系统托盘上点击右键,选择设置。
  2. 选择“自动保存”选项卡,在“保护重要文件夹”中勾选文档。这一步的操作是为了保证文档文件夹中的内容电脑时刻与云端保持同步。注意:选择之后本地的文档将成为指向Onedrive文件夹的目录,因此保存在其中的虚拟机或VS工程文件等有可能出现无法读取的现象,请注意在操作后进行调整。
  3. 假设我要同步的本地文件夹是E:\工作,而Onedrive在本地的保存目录为C:\Users\用户名\OneDrive
  4. 以管理员模式打开命令提示符(Win10用户可直接搜索cmd,然后右键命令提示符搜索结果的程序,选择以管理员权限运行)。在打开的窗口中输入命令:mklink /d C:\Users\用户名\OneDrive\工作 E:\工作。注意:执行本操作时请确保C:\Users\用户名\OneDrive下没有名为“工作”的目录,否则将会报错。
  5. 回车键执行后,命令提示符返回“……创建的文件链接”字样的文字,即说明建立连接成功。

注意:如果文件目录中包含空格,则在输入命令的时候应使用英文双引号将该完整目录括起来。

到这里,所有的步骤就完成了,你可以尝试进行添加文件,删除文件操作。你会发现,两个不同地址的文件随时在保持着同步(同一个文件拥有了两个地址:原地址和Onedrive目录下的地址)。同理,当打开Onedrive文件同步功能是,该目录下的文件也与云端保持着一致。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先,你需要安装阿里云Python SDK,可以通过以下命令安装: ``` pip install aliyun-python-sdk-core pip install aliyun-python-sdk-sts pip install aliyun-python-sdk-oss ``` 接着,你需要在阿里云控制台中创建一个AccessKey,用于访问阿里云API。 然后,你可以先编写一个简单的Python脚本,用于上传文件到阿里云OSS: ```python import os import datetime import oss2 # 阿里云AccessKey信息 access_key_id = '<your-access-key-id>' access_key_secret = '<your-access-key-secret>' # 阿里云OSS存储桶信息 endpoint = '<your-oss-endpoint>' bucket_name = '<your-bucket-name>' bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name) # 本地文件路径 local_file_path = '<your-local-file-path>' # 上传到OSS的文件名 timestamp = datetime.datetime.now().strftime('%Y%m%d%H%M%S') file_name = timestamp + '_' + os.path.basename(local_file_path) # 上传文件 bucket.put_object_from_file(file_name, local_file_path) ``` 以上代码通过阿里云Python SDK创建了一个OSS Bucket对象,并使用put_object_from_file方法将本地文件上传到阿里云OSS中。 如果你想实现自动化上传,你可以使用Python的watchdog库,监控指定目录中文件的变化,并在文件变化后调用上述代码进行上传。以下是一个简单的watchdog实现示例: ```python import os import datetime import time import watchdog.events import watchdog.observers import oss2 # 阿里云AccessKey信息 access_key_id = '<your-access-key-id>' access_key_secret = '<your-access-key-secret>' # 阿里云OSS存储桶信息 endpoint = '<your-oss-endpoint>' bucket_name = '<your-bucket-name>' bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name) # 本地监控目录 watch_path = '<your-watch-path>' class FileEventHandler(watchdog.events.FileSystemEventHandler): def on_created(self, event): if event.is_directory: return local_file_path = event.src_path timestamp = datetime.datetime.now().strftime('%Y%m%d%H%M%S') file_name = timestamp + '_' + os.path.basename(local_file_path) bucket.put_object_from_file(file_name, local_file_path) if __name__ == "__main__": event_handler = FileEventHandler() observer = watchdog.observers.Observer() observer.schedule(event_handler, watch_path, recursive=True) observer.start() try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join() ``` 以上代码使用watchdog库监控指定目录中的文件变化,在文件被创建时调用上述上传代码进行上传。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值