将文件从Amazon S3同步到本地

时间:2015-08-17 15:15:46

标签: linux bash amazon-web-services amazon-s3 nfs

我有一个包含多个目录的Amazon S3存储桶。这些目录包含各种重要文件。

我想备份我的S3存储桶并将其保存到本地网络的nas-server。我写了一个每天运行一次的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上有两次相同的文件,一次是扩展名为大写,一次是扩展名为小写,这会导致问题吗?

每次发生此同步错误时,它都会从S3重新下载整个子文件夹,而不仅仅是同步它。我在亚马逊通过不断覆盖我本地nas上的文件已经从亚马逊下载了2个Tb之后的几天才注意到这一点。因此,我从亚马逊收到了很高的账单。

是否有其他人遇到过这样的问题或知道解决此问题的方法? 一个明显的解决方案可能是从S3本身删除导致此问题的文件,但我似乎无法使用S3或cyberduck的命令行工具为每个文件名列出多个文件。 也许只有多个具有相同名称的文件才显示一个文件。

感谢您阅读此内容直到最后。

1 个答案:

答案 0 :(得分:0)

您可能会遇到此问题:https://bugzilla.kernel.org/show_bug.cgi?id=46671

NFS是一个问题,而不是AWS。尝试直接在NAS上运行同步脚本,看看是否能解决问题。

显然在较新的Linux内核上已经使用ext4解决了这个问题 - 您可以更新NAS以获取此修复程序。