为什么通常要分两步

大多数 Mac 文件传输 App 都把你的 Mac 当作每次传输的一端。要把一个文件夹从预发布服务器转移到 S3 存储桶,你得先下载到 Mac,再找到它,然后上传到存储桶。等待时间翻倍,事后还要清理磁盘上的副本,选错文件夹的风险也随之而来。

在终端中,对于 SSH 服务器可以绕过 Mac:在两台主机之间使用 scp,或在其中一台上运行 rsync。前提是两端都支持 SSH,而且你熟悉这些命令。对 S3、WebDAV 或 FTP 来说,这就帮不上忙了。

逐步操作:从一台服务器拷贝到另一台

  1. 打开 AnyBucket,按 ⌘T 新建标签页。
  2. 按 ⇧⌘K 连接第一台服务器,或按 ⌘K 并输入书签名称中的几个字母。
  3. 按 ⌘\ 打开第二个窗格,然后从该窗格的来源菜单中选择另一台服务器。
  4. 按 ⇥ 回到源窗格,找到要传输的文件。
  5. 用 Space 标记它们,或按 + 并输入 *.jpg 之类的模式,标记所有匹配的文件。
  6. 按 F5 将它们拷贝到另一个窗格,或按 F6 移动。

传输会加入窗格下方的队列,你可以继续工作。想不打开目标位置就选好它?⌘G 会把标记的文件拷贝到你在命令面板中选择的任意书签或文件夹,⌥⌘G 则是移动。

文件如何传输

AnyBucket 会为每次传输选择路径:

来源和目标 文件的传输方式
同一个 S3 账户或存储 在服务器上,使用 CopyObject
同一台 WebDAV 服务器 在服务器上,使用 COPY 和 MOVE
同一台 SFTP 服务器,账户有 shell 在服务器上,通过 SSH 使用 cp
两台不同的服务器 经由你 Mac 上一个容量有限的小型中转缓冲区流式传输
本机和服务器 直接上传或下载

移动会先拷贝文件、校验副本,然后删除原件。在副本到位之前,什么都不会被删除。

任意两种协议自由组合

每种协议都能与其他任何协议双向配合:SFTP、FTP、FTPS、Amazon S3 和 S3 兼容存储(Cloudflare R2、Backblaze B2、Wasabi、DigitalOcean Spaces、Google Cloud Storage、MinIO)、基于 HTTP 和 HTTPS 的 WebDAV,以及本机。一些常见任务:

  • 发布素材:从 SFTP Web 服务器到 S3 或 R2 存储桶。
  • 更换服务商:从 Amazon S3 到 Cloudflare R2 或 Backblaze B2,一个存储桶接一个存储桶。
  • 停用旧主机:从 FTP 服务器到 WebDAV 共享或新的 SFTP 服务器。

在 AnyBucket 的测试中,每一组有序的协议组合都会针对真实服务器进行端到端拷贝和移动,每个字节都会核对。

文件已存在时

如果目标位置已有同名文件,AnyBucket 会在覆盖任何内容之前询问你。你可以替换它、仅在你的文件较新时替换、保留两者(副本会变为 name 2.ext)、跳过,或续传拷贝了一半的文件,并将这个选择应用到本次传输的其余文件。进一步了解冲突。

大量拷贝与连接中断

服务器之间的大任务可能需要一段时间,因此队列的设计就是要把它们完成:

  • 连接中断或服务器重启时,会在 1 秒、3 秒和 8 秒后换用新连接重试。
  • 队列会被存储。退出 AnyBucket 后,中断的传输会在下次启动时恢复。
  • 只要协议允许,都会校验校验和。
  • 关闭最后一个窗口后,AnyBucket 会继续在菜单栏中运行,传输也会继续。

仍然失败的项目会带着错误信息,在“传输”窗口(⌥⌘T)的需要处理下等待。请参阅传输停止了。