首页 Linux PT硬链接助手
文章
取消

Linux PT硬链接助手

由于自我需求,写了两个脚本完成PT下载和保种两全其美的硬链接 Linux shell 脚本方案。

  • PTtool

    github地址: appotry/PTtool

    硬链接工具

    设计目的

    方便PT用户硬链接文件,不需要再最大可能情况下节约空间,并保持做种。 小于1M的文件直接复制,方便emby,tmm等工具刮削修改nfo等小文件。 大于1M的文件硬链接到目的目录,可以修改文件名,但是不能修改文件内容!

    例如: /share/Download/src #保存下载的PT文件 /share/Download/dst #保存你自己处理过的视频文件,吧emby,tmm的目录设置到dst下面 下载脚本后chmod +x mklink.sh给与执行权限 使用mklink脚本修改如下,然后直接运行mklink.sh。就可以把src下面的文件全部硬链接到dst目录。mklink适合一次性把源文件夹链接到目的文件夹

    1
    2
    
    SRC="/share/Download/src"
    DST="/share/Download/dst"
    

    注意,源目录,目的目录需要在一个分区里面。硬链接不能跨分区。

    解决的问题

    tmm,emby刮削的时候,必定修改nfo文件,下载的封面等图片不同刮削站点都不同,所以小文件复制,不怕修改。大文件硬链接,占有一份空间 被硬链接过的文件,同时存在地方,但是都指向一个存储空间,只有所有的硬链接都删除了,这个文件才会被系统删除。 同时,所有的硬链接文件,修改其中一个,其它所有指向这个位置的硬链接文件都被修改了。

    使用说明

    下载资源目录/share/Download,qbittorrent资源分类下载到/share/Download/src/下面的各个子目录,例如tv, anime, tv, movie, 4k, soft等等 创建一个资源整理使用目录/share/Download/dst/目录,然后就可以把/share/Download/src和/share/Download/dst目录作为下面2个脚本的输入目录,来使用了

    小文件直接复制,方便tmm刮削修改nfo文件,大文件硬链接,只占有一份空间,但有2分文件,可以改名,移动目录,方便tmm整理刮削。 做种,emby使用两不误!

    建议目录结构

    1
    2
    3
    4
    5
    
    /share/Downlosd/src
    /share/Download/dst
    在src目录下面建立子目录movie,music,anime,tv,4k等等,在qbittorrent里面设置分类,
    指向这里的movie,music,anime,tv等子目录。下载完后使用下面的硬链接脚本,
    把文件硬链接到目的文件夹。tmm,emby使用目的文件夹刮削数据。
    

    qbittorrent使用设置

    • 移动种子保存位置 在qt的web界面种子上面右键,选择菜单保存位置
    • 设置分类目录 在qt的web界面种子上面右键,选择分类->新分类,先写分类名称和路径。种子添加时选择自动管理

      mklink.sh

      修改脚本参数源目录,目的目录,替换为你自己的目录。 脚本将把源目录所有文件硬链接到目的目录,小于1M的文件直接复制到目的目录。方便nfo等小文件刮削修改,大于1M的文件 硬链接到目的目录,以节约空间,2份文件只占有一份空间。

      1
      2
      
      SRC="/share/Download/tmp/src"
      DST="/share/Download/tmp/dst"
      

      mklink 直接针对2个文件夹做硬链接,小于1m的复制,但是没有判断是否已经硬链接过。适合全新的没有硬链接过的目录。

    dirlink.sh

    设计原理:针对输入原路径下一级子目录判断是否有文件islinked.lk, 有这个文件就跳过,没有就硬链接这个子目录到目的目录生成对应的子目录。 小于1M的文件复制,大于1M的文件硬链接。

    可以直接修改脚本参数,可以从参数$!,$2输入源目录,目的目录。 此脚本和mklink.sh区别在于,将检查每个目录是否已经被硬链接过,已经连接过的将跳过去不再硬链接。 原理是在源文件夹目录下添加文件islinked.lk,通过检测这个文件来判断是否硬链接过

    1
    2
    
    SRC="/share/Download/tmp/src/movie"
    DST="/share/Download/tmp/dst/movie"
    

    注意:src目录下面的文件需要放到各个子目录下面去,例如src/anime/amine1,src/tv/tv2,这样才能保证islinked.lk工作正常 目录设置可以直接修改脚本,也可以命令行输入

    1
    2
    
    #dirlink.sh sourcedir dstdir
    dirlink.sh /share/Download/tmp/src /share/Download/tmp/dst
    

    重新建立连接,一次性删除所有islinked.lk文件

    1
    
    find /share/Download/tmp -name "islinked.lk" | xargs rm -f
    

    替换前面的路径/share/Download/tmp为你自己的路径,操作和rm相关的命令一定注意不要输入错误,删错文件代价极大!

    一次性硬链接多个目录

    如下所示脚本link.sh

    1
    2
    3
    4
    
    #!/bin/sh
    /share/Download/source/dirlink.sh /share/Download/source/anime /share/Download/dst/anime
    /share/Download/source/dirlink.sh /share/Download/source/movie /share/Download/dst/movie
    /share/Download/source/dirlink.sh /share/Download/source/tv /share/Download/dst/tv
    

    修改限制2M大小以下的复制

    修改脚本参数FILEGIG,原脚本是1M大小,修改为下面这样就是2M大小

    1
    
    FILEGIG=2000000c
    

    使用声明

    数据无价,小心操作。 本脚本没有rm删除,只有mkdir和cp, 最多搞乱文件系统。但要注意不要把目的地目录设置到系统目录去了。 一切后果自负

    感觉对你有帮助,来个star吧

    Contributing

    1. Fork it ( https://github.com/[my-github-username]/PTtool/fork )
    2. Create your feature branch (git checkout -b my-new-feature)
    3. Commit your changes (git commit -am 'Add some feature')
    4. Push to the branch (git push origin my-new-feature)
    5. Create a new Pull Request
本文由作者按照 CC BY 4.0 进行授权

Gitlab的安装及使用

破解Gitlab EE