Linux文件下载、传输、共享同步(Aria2、Caddy、Rsync、Samba、NFS等)

安装软件

# Arch系
sudo pacman -S samba rsync nfs-utils aria2  transmission-cli

aurman -S lsyncd
# debian系
sudo apt install samba rsync hdparm aria2  transmission-cli

设定文件系统挂载

# 查看分区状况
sudo fdisk -a
# 编辑分区挂载分区文件
sudo nano /etc/fstab

在里面加入如下内容,详细设置参考ArchLinux Wiki

# nofail:外部设备在插入时挂载,在未插入时忽略。pass: 0 表示设备不会被 fsck 所检查
# <file system>        <dir>         <type>    <options>                    <dump> <pass>
/dev/sda1        /media/pi/ssd         auto     defaults,noatime,nofail        0      0
# 使用以下命令在所有父目录上添加"x"权限:
sudo chmod o+x /media /media/pi /media/pi/ssd
# 让挂载点生效
sudo mount -a 
# 测试读取速度
sudo hdparm -t --direct /dev/sda

设置Aria2

sudo mkdir /etc/aria2
sudo touch /etc/aria2/aria2.session
sudo chmod 777 /etc/aria2/aria2.session
sudo nano /etc/aria2/aria2.conf
# 后台运行,用SystemD时不需要这一句
# daemon=true
# 启用RPC, 默认:false
enable-rpc=true
# 允许所有来源, 默认:false
rpc-allow-origin-all=true
# 允许非外部访问, 默认:false
rpc-listen-all=true
#RPC端口, 仅当默认端口被占用时修改
#rpc-listen-port=6800
#最大同时下载数(任务数), 路由建议值: 3
max-concurrent-downloads=9
#断点续传
continue=true
#同服务器连接数
max-connection-per-server=5
#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=10M
#单文件最大线程数, 路由建议值: 5
split=10
#下载速度限制
max-overall-download-limit=0
#单文件速度限制
max-download-limit=0
#上传速度限制
max-overall-upload-limit=0
#单文件速度限制
max-upload-limit=0
#断开速度过慢的连接
#lowest-speed-limit=0
#验证用,需要1.16.1之后的release版本
#referer=*
#文件保存路径, 默认为当前启动位置  请自行填写
dir= /media/pi/ssd/Download/
#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用, 需要1.16及以上版本
#disk-cache=0
#另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
#enable-mmap=true
#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
#所需时间 none < falloc ? trunc << prealloc, falloc和trunc需要文件系统和内核支持
file-allocation=falloc
# 从会话文件中读取下载任务
input-file=/etc/aria2/aria2.session
# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
save-session=/etc/aria2/aria2.session
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
save-session-interval=60
# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
seed-ratio=2.0
# 本地节点查找, PT需要禁用, 默认:false
bt-enable-lpd=true
bt-tracker=udp://tracker.coppersurfer.tk:6969/announce,udp://tracker.internetwarriors.net:1337/announce,udp://tracker.opentrackr.org:1337/announce,udp://exodus.desync.com:6969/announceBT,http://nyaa.tracker.wf:7777/announce,udp://open.stealth.si:80/announce,udp://tracker.coppersurfer.tk:6969/announce,udp://exodus.desync.com:6969/announce
sudo vim /lib/systemd/system/aria.service
[Unit]
Description=Aria2 Service
After=network.target

[Service]
User=root
ExecStart=/usr/bin/aria2c --conf-path=/etc/aria2/aria2.conf

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable aria  && sudo systemctl restart aria
# 查看 aria 服务状态
sudo systemctl status aria

transmission

用来下载ed2k

# 查看配置
transmission-remote -si
sudo nano settings.json
//TODO transmission配置

caddy设置

CADDY_TELEMETRY=on curl https://getcaddy.com | bash -s personal http.forwardproxy,http.git,http.webdav,tls.dns.cloudflare
sudo vim /etc/CaddyFile.conf
:5001 {
    root /home/pi/soft/AriaNg/  #这里替换为你的网站文件目录
}
:5002 {
    root /media/pi/ssd/Download/ #这里替换为你的下载文件目录
    browse 
}
sudo vim /lib/systemd/system/caddy.service
[Unit]
Description=Caddy Service
After=network.target

[Service]
User=root
ExecStart=/usr/local/bin/caddy --conf /etc/CaddyFile.conf

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable caddy && sudo systemctl restart caddy
# 查看 aria 服务状态
sudo systemctl status caddy

Amule设置

下载ed2k连接用,编写中。

Samba设置

# 修改 /etc/samba/smb.conf
sudo vim /etc/samba/smb.conf

编辑smb.conf文件,改为以下内容

[global]
        workgroup = WORKGROUP
        # 设置出现在“网上邻居”中的主机名
        netbios name = neo4server
        server string = SambaServer
        security = user
        passdb backend = smbpasswd
        load printers = yes
        cups options = raw
[homes]
        comment = Home Directories
        browseable = no
        writable = yes
[nanopi-ssd]
        comment = ssd 
        path = /media/pi/ssd
        browseable = yes
        guest ok = no
        writable = yes
#  新建/etc/samba/smbpasswd文件
sudo touch /etc/samba/smbpasswd
# 根据之前设置的valid users,设置用户密码
# root 替换为你设置的用户名
sudo smbpasswd -a root
# 输入两次密码后,会提示 Added user gzd. 表示设置成功
#  若用户名非当前登录系统的用户名,可能会提示Failed
# 如果在[globa]中” passdb backend = tdbsam”的话,会需要使用” pdbedit” 来增加用户

sudo systemctl restart smbd  nmbd

通过mount和smbcount挂载远程共享文件夹

modprobe cifs
mkdir $HOME/samba_temp
mount -t cifs -o username=administrator,password=123456 //192.168.0.1/tmp $HOME/samba_temp

Rsync相关配置文件

Rsync

rsync [OPTION]… SRC DEST
目录SRC是否以斜杠结尾,会影响同步的结果:
以斜杠结尾:目录DEST里面有 [目录SRC本身]
不以斜杠结尾:目录DEST里面有 [目录SRC里面的文件]

Master端手动传输

# 手动传输文件(不同机器之间)
rsync -avzP 192.168.200.173::somedata /home/youname/somedata
# 手动传输文件(本地目录),留心源目录的“/”,加不加意思完全不同。目的地目录就随便了,反正意思一样。

rsync -avzP /home/username/somedata1/ /home/youname/somedata2/

# 从另一个笔记本的tocdata,通过SSH隧道拉取到本地(需要输入密码):
rsync -avzP root@192.168.1.20:/home/username/source/ /sharedfolders/localfolder

# -a   表示文件应被存档,这意味着他们的大部分特性被保留 (不包括ACLs, 硬链接或扩展属性,如capabilities)
# -v, --verbose 详细模式输出
# -P 显示进度
# -z, --compress 对备份的文件在传输时进行压缩处理
# -r --recursive 递归传输子文件夹
虽然还可以写自动备份脚本,但用第三方的lsyncd应该更好。

Slave端设置

sudo nano /etc/rsyncd.conf
uid = root
gid = root
pid file = /var/run/rsyncd.pid #pid文件的存放位置 
lock file = /var/run/rsync.lock #锁文件的存放位置 
log file = /var/log/rsyncd.log #日志记录文件的存放 
[node2] #模块名字,自己命名 
path = /data/node2 #指定文件目录所在位置,这是必须指定 
read only = no 
list = no #是否把rsync服务器上提供同步数据的目录显示 
hosts allow = 192.168.1.39 #允许访问的主机 hosts deny = * #拒绝访问的主机

启动服务

rsync --daemon --config=/etc/rsyncd.conf

通过Rsync同步文件

rsync -av 源目录 目标目录

拉取文件:

rsync -avzP 192.168.2.1::datagroup /home/youname/data

NFS共享

配置文件:

sudo nano  /etc/exports
# 加入这行
/root/data  *(rw)
# 重启服务
sudo systemctl  restart nfs-server

有个重大的问题就是中文会乱码。
虽然可以通过设置系统来支持UTF-8,但这样又会带来中文目录软件异常的问题。

参考文献:
树莓派3B+ aria配置
fstab (简体中文)- ArchWiki
配置 samba 服务器
rsync简明教程
rsync 的使用方法
服务器和本地的文件同步
Archlinux维基Samba条目
Lsyncd搭建同步镜像-用Lsyncd实现本地和远程服务器之间实时同步
【 rsync 】コマンド(その1)――ファイルやディレクトリを同期する
lsyncdで双方向同期するなら、delete=’running’ がいい
Config Layer 4: Default Config
Archlinux Wiki NFS条目

发表评论

电子邮件地址不会被公开。 必填项已用*标注