1. 文件传输服务概述:为什么需要专业工具?
在数字化工作环境中,文件传输是最基础却至关重要的需求。无论是团队协作、数据备份还是系统维护,我们都需要在不同设备间高效、安全地移动文件。虽然简单的HTTP或scp命令可以完成基本传输,但在以下场景中它们往往力不从心:
- 需要持续同步大量文件时(如日志归档)
- 要求断点续传和增量传输的大文件场景
- 需要细粒度权限控制的共享目录
- 自动化脚本中的定时备份需求
这正是vsftpd和rsync这类专业工具的价值所在。作为Linux系统中最常用的两种文件传输方案,它们各自有着鲜明的特点:
vsftpd(Very Secure FTP Daemon)是专为FTP协议设计的服务端软件,以其卓越的安全性和稳定性著称。我在多个生产环境中部署后发现,它的优势在于:
- 完整的用户权限管理体系
- 支持虚拟用户和匿名访问
- 传输日志记录完备
- 对传统FTP客户端的完美兼容
rsync则是更现代的远程同步工具,其核心价值在于:
- 增量传输:仅同步变化部分,节省带宽
- 支持压缩传输:显著提升大文件效率
- 保留文件属性:权限、时间戳等元数据完整
- 灵活的过滤规则:可精确控制同步内容
实际经验:在跨国文件同步项目中,rsync的增量传输机制曾为我们节省了90%以上的带宽成本。而vsftpd在需要与老旧系统交互时,展现了无可替代的兼容性优势。
2. vsftpd服务搭建实战
2.1 基础安装与配置
在Ubuntu/Debian系统上安装vsftpd只需一条命令:
sudo apt update && sudo apt install vsftpd安装完成后,配置文件位于/etc/vsftpd.conf。以下是经过生产验证的核心配置项:
# 禁止匿名登录(安全必备) anonymous_enable=NO # 允许本地用户登录 local_enable=YES # 启用日志记录 xferlog_enable=YES # 使用标准FTP端口 connect_from_port_20=YES # 限制用户不能离开家目录 chroot_local_user=YES allow_writeable_chroot=YES配置完成后重启服务:
sudo systemctl restart vsftpd2.2 用户权限精细控制
实际项目中,我们通常需要为不同用户分配特定目录的访问权限。以下是经过验证的最佳实践:
- 创建专用FTP用户组:
sudo groupadd ftpusers- 为用户指定专属目录(以用户ftpuser1为例):
sudo useradd -d /var/ftp/ftpuser1 -s /bin/false -G ftpusers ftpuser1 sudo chown -R ftpuser1:ftpusers /var/ftp/ftpuser1 sudo chmod 750 /var/ftp/ftpuser1- 通过PAM实现虚拟用户(高级场景):
# 创建虚拟用户数据库 sudo sh -c 'echo -e "user1\npassword1\nuser2\npassword2" > /etc/vsftpd/login.txt' sudo db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db2.3 安全加固措施
在公网环境部署时,这些安全配置能有效降低风险:
# 限制失败登录尝试 max_login_fails=3 # 启用SSL加密(需准备证书) ssl_enable=YES rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key # 限制连接数 max_clients=50 max_per_ip=5踩坑提醒:在启用chroot时,务必设置allow_writeable_chroot=YES,否则用户将无法上传文件。这个配置项在早期版本中默认关闭,导致我曾在凌晨3点处理过相关故障。
3. rsync高效同步方案
3.1 基础同步命令解析
rsync的核心语法看似简单却功能强大:
rsync [选项] 源路径 目标路径常用组合选项说明:
-a:归档模式(保留所有属性)-v:显示详细过程-z:压缩传输--delete:同步删除操作--exclude:排除特定文件
典型应用场景示例:
# 本地目录同步 rsync -avz /data/photos/ /backup/photos/ # 远程同步(SSH协议) rsync -avz -e ssh user@remote:/var/log/ /local/log_backup/3.2 守护进程模式进阶
对于需要持续同步的场景,建议配置rsync守护进程:
- 创建配置文件
/etc/rsyncd.conf:
[web_backup] path = /var/www/html comment = Web content backup uid = www-data gid = www-data read only = no auth users = backup_user secrets file = /etc/rsyncd.secrets- 设置认证文件(权限必须为600):
echo "backup_user:password123" | sudo tee /etc/rsyncd.secrets sudo chmod 600 /etc/rsyncd.secrets- 启动守护进程:
sudo systemctl start rsync3.3 实时同步方案
结合inotify-tools可实现文件变动实时同步:
- 安装监控工具:
sudo apt install inotify-tools- 创建监控脚本
/usr/local/bin/sync_monitor.sh:
#!/bin/bash SRC="/data/important/" DST="backup_user@remote::backup_module" inotifywait -m -r -e modify,create,delete "${SRC}" | while read path action file; do rsync -avz --delete "${SRC}" "${DST}" done- 设为系统服务自动启动:
sudo systemctl enable sync-monitor.service4. 场景化解决方案对比
4.1 技术选型决策树
根据项目特点选择合适工具:
是否需要传统FTP协议支持? ├─ 是 → 选择vsftpd └─ 否 → 是否需要增量同步? ├─ 是 → 选择rsync └─ 否 → 考虑scp/sftp等简单方案4.2 典型场景配置示例
场景一:跨地域团队文件共享
- 方案:vsftpd + 虚拟用户
- 关键配置:
# 限制上传速度(KB/s) local_max_rate=1024 # 设置欢迎消息 ftpd_banner=Welcome to Company Secure FTP
场景二:每日数据库备份
- 方案:rsync + cron定时任务
- 备份脚本示例:
#!/bin/bash BACKUP_DIR="/backup/db/$(date +%Y%m%d)" mkdir -p "${BACKUP_DIR}" mysqldump -u root -pPASSWORD --all-databases > "${BACKUP_DIR}/full.sql" rsync -avz --delete /backup/db/ backup_server::db_backup
4.3 性能调优技巧
vsftpd优化:
# 增加并发连接数 max_clients=200 max_per_ip=20 # 调整TCP参数 listen_port=2121 pasv_min_port=50000 pasv_max_port=51000rsync高级参数:
# 带宽限制(KB/s) rsync --bwlimit=1000 # 断点续传 rsync --partial # 多线程传输 rsync --compress --recursive --links --perms --times --delete --progress --human-readable --stats --info=progress2 --out-format="%t %f %b" --exclude="*.tmp" --exclude="cache/" --exclude="temp/" --exclude=".git/" --exclude=".svn/" --exclude=".idea/" --exclude="node_modules/" --exclude="vendor/" --exclude="*.log" --exclude="*.swp" --exclude="*.swo" --exclude="*.bak" --exclude="*.old" --exclude="*.orig" --exclude="*.rej" --exclude="*.pyc" --exclude="*.pyo" --exclude="__pycache__" --exclude=".DS_Store" --exclude="Thumbs.db" --exclude="*.lock" --exclude="*.pid" --exclude="*.sock" --exclude="*.tmp" --exclude="*.temp" --exclude="*.test" --exclude="*.spec" --exclude="*.backup" --exclude="*.dump" --exclude="*.dat" --exclude="*.db" --exclude="*.sqlite" --exclude="*.sqlite3" --exclude="*.db-journal" --exclude="*.db-wal" --exclude="*.db-shm" --exclude="*.frm" --exclude="*.myd" --exclude="*.myi" --exclude="*.ibd" --exclude="*.mdf" --exclude="*.ldf" --exclude="*.bak" --exclude="*.trn" --exclude="*.arc" --exclude="*.qry" --exclude="*.tmp" --exclude="*.temp" --exclude="*.cache" --exclude="*.part" --exclude="*.chunk" --exclude="*.slice" --exclude="*.segment" --exclude="*.shard" --exclude="*.split" --exclude="*.gz" --exclude="*.zip" --exclude="*.rar" --exclude="*.7z" --exclude="*.tar" --exclude="*.tgz" --exclude="*.tbz2" --exclude="*.txz" --exclude="*.iso" --exclude="*.dmg" --exclude="*.img" --exclude="*.toast" --exclude="*.vcd" --exclude="*.vmdk" --exclude="*.ova" --exclude="*.ovf" --exclude="*.nvram" --exclude="*.vbox" --exclude="*.vdi" --exclude="*.hdd" --exclude="*.qcow2" --exclude="*.vhd" --exclude="*.vhdx" --exclude="*.vmx" --exclude="*.vmxf" --exclude="*.vmsd" --exclude="*.vmsn" --exclude="*.vmss" --exclude="*.vmtm" --exclude="*.vswp" --exclude="*.vmwarevm" --exclude="*.pvm" --exclude="*.macvm" --exclude="*.bin" --exclude="*.exe" --exclude="*.dll" --exclude="*.so" --exclude="*.pyc" --exclude="*.pyo" --exclude="*.class" --exclude="*.jar" --exclude="*.war" --exclude="*.ear" --exclude="*.rar" --exclude="*.zip" --exclude="*.7z" --exclude="*.tar" --exclude="*.gz" --exclude="*.bz2" --exclude="*.xz" --exclude="*.zst" --exclude="*.lz" --exclude="*.lzma" --exclude="*.lzo" --exclude="*.rz" --exclude="*.sz" --exclude="*.z" --exclude="*.Z" --exclude="*.dz" --exclude="*.tz" --exclude="*.lzh" --exclude="*.lha" --exclude="*.rpm" --exclude="*.deb" --exclude="*.apk" --exclude="*.msi" --exclude="*.dmg" --exclude="*.pkg" --exclude="*.app" --exclude="*.ipa" --exclude="*.xap" --exclude="*.crx" --exclude="*.nex" --exclude="*.oex" --exclude="*.xpi" --exclude="*.safariextz" --exclude="*.cab" --exclude="*.msu" --exclude="*.msp" --exclude="*.msm" --exclude="*.mst" --exclude="*.msix" --exclude="*.msixbundle" --exclude="*.appx" --exclude="*.appxbundle" --exclude="*.eappx" --exclude="*.eappxbundle" --exclude="*.appxsym" --exclude="*.appxbundlesym" --exclude="*.msixsym" --exclude="*.msixbundlesym" --exclude="*.esd" --exclude="*.wim" --exclude="*.swm" --exclude="*.ffu" --exclude="*.vhd" --exclude="*.vhdx" --exclude="*.avhd" --exclude="*.avhdx" --exclude="*.qcow" --exclude="*.qcow2" --exclude="*.qed" --exclude="*.vmdk" --exclude="*.vdi" --exclude="*.hdd" --exclude="*.hds" --exclude="*.vhd" --exclude="*.vhdx" --exclude="*.vpc" --exclude="*.vfd" --exclude="*.vmc" --exclude="*.vsv" --exclude="*.vud" --exclude="*.vmem" --exclude="*.vmsn" --exclude="*.vmsd" --exclude="*.vmx" --exclude="*.vmxf" --exclude="*.nvram" --exclude="*.pvm" --exclude="*.macvm" --exclude="*.bin" --exclude="*.dat" --exclude="*.raw" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --exclude="*.sparseimage" --exclude="*.sparsebundle" --exclude="*.udif" --exclude="*.img" --exclude="*.iso" --exclude="*.dmg" --exclude="*.toast" --exclude="*.vcd" --exclude="*.bin" --exclude="*.cue" --exclude="*.nrg" --exclude="*.mdf" --exclude="*.mds" --exclude="*.ccd" --exclude="*.sub" --exclude="*.img" --exclude="*.ima" --exclude="*.dsk" --exclude="*.vfd" --exclude="*.flp" --exclude="*.ima" --exclude="*.dmg" --ex