ECS 中docker 内FTP上传文件迁移到数据盘

本文详细介绍了在不关闭实例的情况下,如何将阿里云ECS系统盘上的FTP文件迁移至数据盘,包括数据盘的挂载、文件迁移、软连接设置及Docker应用重启流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于之前FTP文件上传到了60G的系统文件夹内 空间占满后无法继续上传,故迁移到数据盘上。当然,ECS 系统盘 可以扩容,但必须关闭实例,扩容后根据快照恢复系统,此处仅分享不关闭实例的情况下,进行数据迁移操作。

迁移思路:

1,增加数据盘 vdb1 ,挂载到系统vda1 /mnt/data0 上,然后将系统的FTP上传的大文件夹(不要改名称 eg :/usr/local/xx/app)移到 挂载目录下/mnt/data0  ,同时授权改文件夹,

2,将迁移后的文件夹软连接(ln -s  源文件  目标路径)到 原来上传的路径下面 名称不变,以便FTP、nginx 等docker配置不变,随后修改访问配置 nginx 允许访问软连接文件 ,注意 docker容器中应用的配置不可修改,拷贝到docker 外部 进行修改,然后映射使用

3,重启 docker 中的相关应用 即可

操作:

1,df -h 查看系统磁盘使用情况及数据盘是否挂载

以上数据盘是已挂载好的,而且是挂载在/mnt/data0上的,如果没有则未挂载(是否有数据盘 fdisk -l  或在阿里云后台查看云盘数量),若是未分区的数据盘 则需要分区,格式化,挂载操作:

查看 数据盘:fdisk -l 

查看 磁盘格式:df -T  (type:ext3/ext4/tmpfs/ntfs/...等等)

2分区:若fdisk -l 查看到数据盘为/dev/vdb1 那么分区的磁盘为vdb

命令:fdisk vdb

创建新分区 依次输入 n   p   1   1  wq  具体步骤可点击参考

格式化分区: mkfs.ext4 /dev/vdb1

可能出现:/dev/sdc1 is apparently in use by the system; will not make a filesystem here!

对网上的其他进行尝试:

# dmsetup status
No devices found

解决办法:

 # fuser -v /dev/sdc1

USER        PID ACCESS COMMAND
/dev/sdc1:           root      30049 F.... mkfs.ext3
重新执行mkfs -t ext3 /dev/sdc1。

OK,搞定。

创建挂载目录: mkdir /mnt/data0

3 挂载分区: mount /dev/vdb1  /mnt/data0
然后挂载好,查看挂载情:df -h

最后设置系统自动加载

[root@xxxff xx]# cat /etc/fstab  

用vi 命令添加 mount  /dev/vdb1 /mnt/data0 ext4 defaults 1 2 

或者命令: echo '/dev/vdb1 /mnt/data0 ext4 defaults 0 0' >> /etc/fstab

迁移文件注意文件名不要改变:mv /usr/local/xx/app  /mnt/data0

另外 卸载挂载命令是:umount /dev/vdb1 

给文件授权 chmod 777 /mnt/data0

4 软连接 到原文件目录上: ln -s /mnt/data0/app   /usr/local/xx 

查看 ls -ll /user/local/xx

红圈部分如果为红色闪烁则有问的,需要删除软连接 出现操作 删除:

rm   /usr/local/xx/app

#只是少了一个“ / ” 删除的 就是链接文件, 也就是在文件的最后不要加上"/"

特别注意:

在删除文件时要小心 如果不小心会把原始文件删掉

在删除软链接文件时,小心使用 Tab 建,一定不要在目录后面加斜扛"/"

软连接后查看文件夹下的文件: ls -l |more  回车可查看更多类似分页,退出 ctrl+c

5 修改docker 引用的外部配置 并重启 应用 

查看正在使用的docker引用:docker ps  (查看所有应用 则docker ps -a)

此处 FTP 是用  进行安装的,因docker 容器中的应用配置不可编辑 要映射外部配置 参考-Docker部署nginx并修改配置文件

此服务器中 均位于:/usr/local/xx 下

容器应用的配置映射都在conf 里面 docker-compose.yml 为FTP安装yml,此处 FTP配置无需变动,仅(点击查看参考)重启docker应用FTP 即可:"docker start 59ec 启动容器 "

docker restart -t=5 c50c9a3c3128  (说明:restart 重启,-t=5 表示5s后执行  c50c9a3c3128  为容器FTP应用ID)

Nginx支持LInux的软链接或硬链接  修改 conf/nginx.conf 

在nginx.conf中 http模块中 disable_symlinks 改成off。启用链接符

1

2

3

http {

    disable_symlinks off;

}

重启 nginx 应用即可。

若为tomcat 则 参考linux下通过软连接实现访问项目路径外面的资源

到此,基本处理完毕!

 

<think>我们参考多个引用,特别是引用[2]和引用[3]提供了迁移Docker到D盘的方法。主要思路是通过创建目录链接(junction)来实现,这样实际文件存储在D盘,但系统仍然通过C盘的路径访问。 根据用户问题,用户希望移动Program Files目录下的Docker文件夹(即C:\Program Files\Docker)到D盘。 步骤: 1. 停止Docker服务:在迁移前,确保Docker没有运行,否则文件可能被占用。 2. 将C:\Program Files\Docker文件夹复制(或移动)到D盘的目标位置,例如D:\Program Files\Docker。 3. 删除(或重命名)原来的C:\Program Files\Docker文件夹。 4. 以管理员身份打开命令提示符(cmd)或PowerShell,使用mklink命令创建目录链接: mklink /J "C:\Program Files\Docker" "D:\Program Files\Docker" 注意:如果目标文件夹已经存在,则无法创建链接,所以必须确保原文件夹已经被删除(或重命名)。 但是,根据引用[3],迁移Docker不仅仅涉及Program Files目录,还有用户目录下的AppData\Local\Docker(存放虚拟磁盘等数据)。如果用户希望完全迁移,可能需要同时迁移这两个部分。 然而,用户的问题只要求迁移Program Files中的Docker文件夹。因此,我们只针对这个目录进行操作。 详细步骤: 1. 停止Docker服务: 可以通过任务管理器停止所有Docker相关进程,或者使用命令: net stop com.docker.service 或者在Docker Desktop中退出。 2. 复制文件夹: 将`C:\Program Files\Docker`整个文件夹复制到`D:\Program Files\Docker`(注意:目标文件夹需要提前创建好,或者使用复制操作自动创建)。 3. 备份并删除原文件夹: 为了避免操作失败,可以先重命名原文件夹,例如改为`C:\Program Files\Docker_bak`。然后删除原文件夹(如果重命名后,可以暂时不删除,等确认迁移成功后再删除)。 4. 创建目录链接(需要管理员权限): 打开管理员命令提示符: mklink /J "C:\Program Files\Docker" "D:\Program Files\Docker" 5. 重新启动Docker,检查是否正常工作。 注意:根据引用[5],在安装时也可以指定安装目录,但用户已经安装,所以采用迁移的方式。 但是,如果用户没有迁移过AppData下的Docker数据,那么Docker程序本身被迁移到了D盘,但数据还在C盘。如果用户希望同时迁移数据,可以参考引用[2]和[3]的方法,迁移AppData下的相关目录。 由于用户问题只要求迁移Program Files中的Docker文件夹,因此我们只提供这一部分的迁移步骤。 重要提示:操作前请备份重要数据,以防万一。 如果迁移Docker无法启动,可能需要检查环境变量或重新安装。 根据引用[5],还有一种方法是在安装时指定安装目录,但用户已经安装,所以重新安装并指定目录也是一种选择,但这里不展开。 下面我们给出迁移步骤的详细说明。</think>要将 `Program Files` 目录下的 Docker 文件迁移到 D 盘,请按照以下步骤操作(基于引用[2][3][5]的方法): --- ### **迁移步骤** 1. **停止 Docker 服务** - 打开任务管理器(`Ctrl+Shift+Esc`),找到 `Docker Desktop Service` 并右键停止[^3]。 - 或通过 PowerShell 执行: ```powershell Stop-Service -Name "com.docker.service" ``` 2. **复制文件夹到 D 盘** - 手动将 `C:\Program Files\Docker` 文件夹**完整复制**到目标位置(例如 `D:\Program Files\Docker`)[^3][^5]。 - ⚠️ 确保目标目录已提前创建(如 `D:\Program Files\Docker`),否则会报错[^5]。 3. **删除原文件夹并创建符号链接** - **删除原目录**: 删除 `C:\Program Files\Docker`(若提示文件占用,重启电脑后重试)[^3]。 - **创建符号链接**(管理员权限运行 PowerShell): ```powershell mklink /J "C:\Program Files\Docker" "D:\Program Files\Docker" ``` - 成功后,`C:\Program Files\Docker` 将显示为“链接”类型,指向 D 盘[^2][^3]。 4. **重启 Docker 并验证** - 启动 Docker Desktop,检查功能是否正常。 - 运行以下命令确认数据存储位置: ```powershell docker info | grep "Docker Root Dir" ``` --- ### **注意事项** 1. **迁移失败处理** - 若符号链接报错“目录已存在”,需确认原文件夹已**彻底删除**(非重命名)[^3]。 -Docker 无法启动,尝试卸载后重新安装到 D 盘(参考引用[5]的安装命令): ```powershell Start-Process -FilePath "Docker Desktop Installer.exe" -ArgumentList 'install', '--installation-dir="D:\Program Files\Docker"' ``` 2. **完整迁移建议** - Docker 数据(镜像/容器)默认在 `C:\Users\<用户名>\AppData\Local\Docker`,如需迁移需同步操作[^2][^3]: ```powershell mklink /J "C:\Users\<用户名>\AppData\Local\Docker" "D:\Docker\Local\Docker" ``` --- ### **迁移原理** 通过 `mklink /J` 创建**目录联结**(Junction),使系统将 `C:\Program Files\Docker` 透明重定向到 D 盘,所有读写操作实际发生在 D 盘,但程序仍按原路径访问[^2][^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值