AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 986379
Accepted
TylerDurden
TylerDurden
Asked: 2019-10-02 05:22:53 +0800 CST2019-10-02 05:22:53 +0800 CST 2019-10-02 05:22:53 +0800 CST

Linux:rsync 将 SMB 镜像挂载到本地磁盘非常慢

  • 772

我尝试将通过 SMB 挂载的共享镜像到本地目录。该共享托管在 Windows 2016 服务器上,我无权访问,也无法安装任何工具。因此,我所拥有的只是一个 SMB 共享。

该共享包含大约 350GB 的数据,主要是小文件 (4MB)。每天晚上,rsync作业都会运行并将所有更新传输到本地目录。这需要很长时间才能完成。发送增量文件列表大约需要 10 到 15 分钟(我需要验证这一点),但是 rsync 需要在 12 小时内传输几 MB(每晚大约更改 20 个文件)。

也许我对如何rsync工作有误解。但我的印象是,在收到增量文件列表后rsync,能够找出需要传输的文件。所以剩下的就是选择更改的文件并传输它们,这应该不超过几分钟到最多一小时。

actimeo=600通过安装带有选项的 SMB 共享,我能够将传输时间从 12 小时缩短到 9 小时。但它仍然需要比预期更长的时间。

所以这是安装(在 Synology NAS 上):

mount -t cifs //remote.server/share /volume1/sysadmin/share -o vers=3.0,username=john,password='***',domain=EXAMPLE,ro,soft,uid=1026,forceuid,gid=100,forcegid,addr=remote.server,file_mode=0777,dir_mode=0777,iocharset=utf8,nocase,cache=none,noserverino,actimeo=600

这是 rsync 工作:

rsyncOptions=(
    --delete
    --human-readable
    --itemize-changes
    "--modify-window=1"
    --partial
    --protect-args
    --recursive
    --stats
    --times
    --verbose
)
rsyncExclusions=(
    --exclude=.DS_Store
    --exclude=.Trash
    --exclude=.TemporaryItems
    --exclude=._*
    --exclude=.AppleDB
    --exclude=.AppleDouble
    --exclude=__MACOSX
    --exclude=.AppleDesktop
    --exclude=.~lock*
    --exclude=.fseventsd
    --exclude=.lock
    --exclude=.afpDeleted*
    --exclude=.smbdelete*
    --exclude=.TEMP_*
    --exclude=@eaDir
    --exclude=Thumbs.db
    --exclude='* '
    --exclude='*.'
)
/usr/bin/rsync "${rsyncOptions[@]}" "${rsyncExclusions[@]}" "/volume1/sysadmin/share/" "/volume1/share/

这是上次同步的统计信息:

Number of files: 571170
Number of files transferred: 279
Total file size: 351.95G bytes
Total transferred file size: 387.34M bytes
Literal data: 387.34M bytes
Matched data: 0 bytes
File list size: 25.95M
File list generation time: 0.526 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 413.57M
Total bytes received: 223.89K

sent 413.57M bytes  received 223.89K bytes  13.11K bytes/sec
total size is 351.95G  speedup is 850.56

我怎样才能加快传输速度?也许其他工具lftp更适合完成此任务......任何指针表示赞赏。

更新 1

  • lftp带mirror --dry-run --no-perms --exclude-glob="*." --exclude-glob="* " --parallel --only-newer选项也需要大约 9 到 12 小时才能完成。所以这是没有办法的。

  • 在 GUI 中或通过cp4.7MB 文件的简单复制大约需要 2-3 秒才能完成。

  • 我从rsync选项--dry-run开始。我一有结果就会更新这篇文章。

更新 2

  • rsyncwith--dry-run现在运行了 6 个多小时。我想假设它也需要 9 个小时以上是节省的。日志中唯一且唯一的条目是sending incremental file list. 今天是这里的公共假期(因此没有更改文件/目录)所以我不确定完成这部分过程需要多长时间。

更新 3

启用更多日志记录后,结果如下所示:

2019/10/04 04:00:03 [20771] building file list
2019/10/04 05:42:16 [20771] .d..t...... dir1/
2019/10/04 05:42:17 [20771] >f+++++++++ dir1/file1
2019/10/04 05:42:44 [20771] .d..t...... dir1/subdir1/
2019/10/04 05:42:44 [20771] >f.st...... dir1/subdir1/file1
2019/10/04 05:43:19 [20771] >f..t...... dir1/subdir1/file2
2019/10/04 05:43:20 [20771] >f.st...... dir1/subdir1/file3
2019/10/04 05:43:20 [20771] .d..t...... dir1/subdir2/
2019/10/04 05:43:21 [20771] >f+++++++++ dir1/subdir2/file1
2019/10/04 10:16:38 [20771] .d..t...... dir2/subdir1/

...

请注意 dir1 和 dir2 之间的巨大时间间隔,要么rsync需要大量时间来遍历目录树,要么我正在发生其他事情。

linux
  • 1 1 个回答
  • 1684 Views

1 个回答

  • Voted
  1. Best Answer
    TylerDurden
    2020-09-16T12:09:04+08:002020-09-16T12:09:04+08:00

    我认为解决我的问题的唯一方法是在双方都运行一个守护进程。由于我不想在删除的 Windows Server 上安装 Cygwin 或 WSL(不在我的控制之下),所以我最终使用了 Unison,到目前为止它工作得很好。现在同步需要 10-15 分钟。所以使用 Unison 和 SSH 我从 GitHub 上的 PowerShell 存储库下载了 SSH 二进制文件。所以我有两个二进制文件/便携式应用程序,我可以放在服务器上并让事情正常工作。请确保在使用 Unison 时使用相同版本的 Unison 和 OCAML。

    • 1

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve