首页 > 系统相关 >linux中,使用python3 实现用硬链接的方式复制复合文件夹

linux中,使用python3 实现用硬链接的方式复制复合文件夹

时间:2024-10-25 17:36:48浏览次数:6  
标签:src dst item 文件夹 linux path os 链接 python3

copy_with_hardlink.py

import os
import argparse

def copy_with_hardlinks(src, dst):
    if not os.path.exists(dst):
        os.makedirs(dst)
    
    for item in os.listdir(src):
        src_item = os.path.join(src, item)
        dst_item = os.path.join(dst, item)
        
        if os.path.isdir(src_item):
            # 递归处理子目录
            copy_with_hardlinks(src_item, dst_item)
        else:
            # 创建硬链接
            print(f"硬链接: {src_item} -> {dst_item}")
            if os.path.exists(dst_item):
                os.remove(dst_item)
            os.link(src_item, dst_item)

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="复制文件夹并创建硬链接")
    parser.add_argument("source", help="源文件夹路径")
    parser.add_argument("destination", help="目标文件夹路径")
    args = parser.parse_args()

    src_path = args.source
    dst_path = args.destination

    if os.path.exists(src_path):
        copy_with_hardlinks(src_path, dst_path)
        print(f"复制完成:{src_path} -> {dst_path}")
    else:
        print(f"源文件夹不存在:{src_path}")


使用说明

  1. 将上述脚本保存到一个Python文件中,例如 copy_with_hardlinks.py。

  2. 打开终端并导航到脚本所在目录。

  3. 运行脚本并指定源文件夹和目标文件夹:

python3 copy_with_hardlinks.py /path/to/source_directory /path/to/destination_directory

假设你有如下结构的源目录:

source_directory/
├── subdir1/
│   ├── file1.txt
│   └── file2.txt
└── subdir2/
    └── file3.txt

运行脚本后,目标目录将变为:

destination_directory/
├── subdir1/
│   ├── file1.txt (硬链接)
│   └── file2.txt (硬链接)
└── subdir2/
    └── file3.txt (硬链接)

注意事项

  • 硬链接只能在同一个文件系统内创建,所以源目录和目标目录必须位于相同的文件系统中。(注意,也不能跨磁盘)

  • 硬链接的创建需要有相应的权限,确保在运行脚本时具有足够的权限。

  • 目标目录中的文件如果已经存在,会被先删除以避免创建硬链接时的冲突。

以上脚本可以实现递归复制文件夹,并在复制文件时创建硬链接,相当于 cp -r 并使用硬链接的效果。

以上内容来源于chatgpt, 经过试验确认,复制迅速准确。

标签:src,dst,item,文件夹,linux,path,os,链接,python3
From: https://www.cnblogs.com/brian-sun/p/18502976

相关文章

  • linux中的ftp服务有什么用
    Linux中的FTP服务是一种重要的网络协议,用于文件传输和共享。本文将深入探讨Linux中的FTP服务的作用,主要包括:1、文件传输功能;2、远程文件访问;3、文件备份和共享。Linux中的FTP服务允许用户在网络上快速、安全地传输文件。无论是将文件上传到服务器还是从服务器下载文件,FTP提供了高......
  • 指南:NOI Linux 2.0 的使用
    0前言本文主要说明NOILinux2.0的基础使用方法,主要测试代码在较为严格的编译环境下能否通过,避免编译错误,适用于主要以Windows为操作系统,辅以NOILinux2.0虚拟机的设备。以NOILinux2.0为操作系统的设备操作相对复杂,且SN现在也没有该种设备,因此只对NOILinux2.0......
  • 职业技能大赛—物联网应用开发赛项(Ubuntun_Linux)精华笔记 (03)
    MySQL中的show各种查看命令介绍//全局变量在MySQL启动的时候由服务器自动将它们初始化为默认值,这些默认值可以通过更改my.ini这个文件来更改。//MySQL中的show各种查看命令介绍是必须了解的Mysql基础操作还请您认真看下去 1.使用show查看showtables或showtablesfrom......
  • Linux系统rpm安装MySQL详细操作步骤
    安装方式介绍在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下:安装方式特点二进制发布包安装软件已经针对具体平台编译打包发布,只要解压,修改配置即可rpm安装软件已经按照redhat的包管理规范进行打包,使用rpm命令进行安装(不能自行解决库依赖问题)yum安装一种在线......
  • 12-linux服务器 sh自启动脚本
    screenrun.sh自启脚本#!/bin/bashecho"screenDuration_serverstart..."#killallpython3sleep0.5pushd/home/rootgpu1/interface/home/rootgpu1/miniconda3/bin/pythonscreenDuration.py&sleep1whiletruepid_array=("screenDuration.py&......
  • 【北京迅为】itop-龙芯2k1000开发指南Linux基础入门vim 编辑器
     龙芯2K1000处理器集成2个64位GS264处理器核,主频1GHz,以及各种系统IO接口,集高性能与高配置于一身。支持4G模块、GPS模块、千兆以太网、16GB固态硬盘、双路UART、四路USB、WIFI蓝牙二合一模块、MiniPCIE等接口、双路CAN总线、RS485总线,扩展能力更强。龙芯2K1000已经广泛应用于工控......
  • linux的文件时间属性
    文件时间属性概念在Linux文件系统中,时间属性是指与文件相关的三个关键时间戳:创建时间(ctime)、修改时间(mtime)和访问时间(atime)1。这些时间戳不仅记录了文件生命周期中的重要时刻,还为系统管理员提供了宝贵的监控和管理工具。通过精确追踪文件的创建、修改和访问时间,Linux......
  • 使用 ​​ltrace​​ 进行 Linux 库函数调用跟踪分析
    ltrace是Linux系统中的一个调试工具,主要用于跟踪应用程序调用的库函数。通过ltrace,可以查看应用程序在运行时调用了哪些共享库中的函数及其参数。这对于调试应用程序的行为,分析软件性能瓶颈,或理解某些程序与库的交互细节非常有用。以下是对ltrace的具体功能、用法和示例的详......
  • FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
    ijkplayer是一款由B站研发的移动端国产播放器,它基于FFmpeg3.4版本,同时兼容Android和iOS两大移动操作系统。ijkplayer的源码托管地址为https://github.com/bilibili/ijkplayer,截止2024年9月15日,ijkplayer获得3.24万星标数,以及0.81万个分支数,而这还是ijkplayer停止更新6年之后的数据,......
  • linux忘记root密码重置
    Linuxroot密码重置的重要性在Linux系统管理中,掌握root密码重置方法至关重要。这种技能不仅有助于应对意外情况,还能确保系统安全性和可用性。当管理员因各种原因无法访问root账户时,重置密码成为恢复系统控制权的关键手段。例如,在远程服务器管理过程中,由于网络问题或配置错误导......