s3fs 获取文件抛出输入/输出错误或无法从远程文件读取 "/mnt/s3/":失败



我试图用s3fs设置sftp,但遇到文件访问错误。

我创建了docker镜像,在入口点安装S3 bucket,我可以将ssh\sftp连接到它的容器,并查看S3 bucket中的文件和文件夹。但我无法获取这些文件:

sftp:

s     get pin
Fetching /mnt/s3/pin to pin
/mnt/s3/pin                                                                                                  0%    0     0.0KB/s - stalled -
Couldn't read from remote file "/mnt/s3/pin" : Failure

ssh:

sftpusername@1234ebc1e2e3:~/s3$ cat pin
cat: pin: Input/output error

应该是什么原因?

这里是入口点:

#!/bin/bash
adduser --disabled-password --gecos "" $SFTP_USER
echo "$SFTP_USER:$SFTP_PASSWORD" | chpasswd
echo "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" > ~/.passwd-s3fs
chmod 600 ~/.passwd-s3fs
mkdir -p /mnt/s3
s3fs $S3_BUCKET /mnt/s3 -o passwd_file=~/.passwd-s3fs -o allow_other -o uid=$(id -u $SFTP_USER)
ln -s /mnt/s3 /home/$SFTP_USER
echo "SFTP user: $SFTP_USER"
echo "S3 Bucket: $S3_BUCKET"
echo "Ready to accept connections..."
exec /usr/sbin/sshd -D

Dockerfile:

FROM ubuntu:16.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get -y update
RUN apt-get -y install openssh-server
RUN apt-get -y install automake autotools-dev g++ git libcurl4-gnutls-dev libfuse-dev libssl-dev libxml2-dev make pkg-config
RUN git clone https://github.com/s3fs-fuse/s3fs-fuse.git && 
cd s3fs-fuse && 
./autogen.sh && 
./configure && 
make && 
make install
RUN mkdir -p /var/run/sshd
COPY entrypoint /
RUN chmod +x /entrypoint
EXPOSE 22
ENTRYPOINT ["/entrypoint"]

构建图像:

docker build -t sftp/s3fs .

运行容器

docker run -p 22 --privileged --env AWS_ACCESS_KEY_ID --env AWS_SECRET_ACCESS_KEY --env SFTP_USER --env SFTP_PASSWORD --env SSH_KEY --env S3_BUCKET --env S3_KEY sftp/s3fs

之后,我可以ssh\sftp到第th个容器(这里是从22转发的端口,可以用dokcer ps检查(

sftp -P 32775 sftpusername@localhost

在容器中,我可以看到s3 bucket和挂载的s3 bucket(目录和文件(。我可以创建新的目录,删除创建的目录,但无法获取文件,存在于bucket中。

更改获取s3fs的方式解决了问题。

我开始使用apt-get:

RUN apt-get -y install s3fs

而不是git克隆:

RUN git clone https://github.com/s3fs-fuse/s3fs-fuse.git && 
cd s3fs-fuse && 
./autogen.sh && 
./configure && 
make && 
make install

相关内容

  • 没有找到相关文章

最新更新