将文件从 Amazon S3 同步到本地
Sync files from Amazon S3 to local
我有一个包含多个目录的 Amazon S3 存储桶。这些目录包含各种重要文件。
我想备份我的 S3 存储桶并将其保存到本地网络中的 nas 服务器。我写了一个每天运行一次的 bash 脚本。
脚本最重要的部分是:
sudo aws s3 sync s3://$s3bucket/$s3folder $localpath --size-only>> $LOG_DIR/$LOG_FILE
我确定所有变量都已设置且正确。
文件被复制到正确的位置,但对于一个子文件夹,我收到此错误:
warning: Skipping file /fullPathToLocalLocation/bucket/subfolder. File/Directory is not readable.
此文件夹的权限与其他子文件夹的权限完全相同。
当我执行这条命令时:
ls -l
我收到这个错误:
当我比较输出时:
ls -l | wc -l
输出为:
ls -1 | sort | uniq | wc -l
结果不同(309774 vs. 309772)
控制台也显示错误:
ls: reading directory .: Too many levels of symbolic links
我也检查了
的输出
dmesg | tail
它有这个错误:
[11823.884616] NFS: directory bucket/subfolder contains a readdir loop.Please contact your server vendor. The file: randomfilename.pdf has duplicate cookie 124416205
我已经从我的 nas 中删除了包含重复 cookie 的文件,并重试了我的 s3 存储桶和本地 nas 之间的同步,这次成功了。
但是我第二次尝试还是报同样的错误
是否有可能我在 s3 上有 2 次相同的文件,一次是大写的扩展名,一次是小写的扩展名,这会导致问题吗?
每次出现此同步错误时,它都会从 S3 重新下载整个子文件夹,而不仅仅是同步它。我只是在它通过不断覆盖我本地 nas 上的文件从亚马逊下载 2 Tb 后几天才注意到这一点。因此,我收到了亚马逊的高额账单。
有没有其他人遇到过这样的问题或知道解决这个问题的方法?
一个明显的解决方案可能是从 S3 本身删除导致此问题的文件,但我似乎无法使用 S3 或 cyberduck 的命令行工具为每个文件名列出多个文件。
也许当有多个同名文件时他们只显示一个文件。
感谢您阅读到最后。
您可能 运行 参与了这个问题:https://bugzilla.kernel.org/show_bug.cgi?id=46671
这是 NFS 的问题,而不是 AWS。直接在 NAS 上尝试 运行 您的同步脚本,看看是否能解决问题。
显然,这个问题已经在较新的 Linux 内核上用 ext4 解决了——你可以更新你的 NAS 来获得这个修复。
我有一个包含多个目录的 Amazon S3 存储桶。这些目录包含各种重要文件。
我想备份我的 S3 存储桶并将其保存到本地网络中的 nas 服务器。我写了一个每天运行一次的 bash 脚本。
脚本最重要的部分是:
sudo aws s3 sync s3://$s3bucket/$s3folder $localpath --size-only>> $LOG_DIR/$LOG_FILE
我确定所有变量都已设置且正确。 文件被复制到正确的位置,但对于一个子文件夹,我收到此错误:
warning: Skipping file /fullPathToLocalLocation/bucket/subfolder. File/Directory is not readable.
此文件夹的权限与其他子文件夹的权限完全相同。
当我执行这条命令时:
ls -l
我收到这个错误:
当我比较输出时:
ls -l | wc -l
输出为:
ls -1 | sort | uniq | wc -l
结果不同(309774 vs. 309772) 控制台也显示错误:
ls: reading directory .: Too many levels of symbolic links
我也检查了
的输出dmesg | tail
它有这个错误:
[11823.884616] NFS: directory bucket/subfolder contains a readdir loop.Please contact your server vendor. The file: randomfilename.pdf has duplicate cookie 124416205
我已经从我的 nas 中删除了包含重复 cookie 的文件,并重试了我的 s3 存储桶和本地 nas 之间的同步,这次成功了。 但是我第二次尝试还是报同样的错误
是否有可能我在 s3 上有 2 次相同的文件,一次是大写的扩展名,一次是小写的扩展名,这会导致问题吗?
每次出现此同步错误时,它都会从 S3 重新下载整个子文件夹,而不仅仅是同步它。我只是在它通过不断覆盖我本地 nas 上的文件从亚马逊下载 2 Tb 后几天才注意到这一点。因此,我收到了亚马逊的高额账单。
有没有其他人遇到过这样的问题或知道解决这个问题的方法? 一个明显的解决方案可能是从 S3 本身删除导致此问题的文件,但我似乎无法使用 S3 或 cyberduck 的命令行工具为每个文件名列出多个文件。 也许当有多个同名文件时他们只显示一个文件。
感谢您阅读到最后。
您可能 运行 参与了这个问题:https://bugzilla.kernel.org/show_bug.cgi?id=46671
这是 NFS 的问题,而不是 AWS。直接在 NAS 上尝试 运行 您的同步脚本,看看是否能解决问题。
显然,这个问题已经在较新的 Linux 内核上用 ext4 解决了——你可以更新你的 NAS 来获得这个修复。