在Amazon Linux中使用SQL Server无法获取.bak备份文件的问题
解决方案:SQL Server on Amazon Linux 备份路径配置与文件取回
一、正确指定备份路径的方法
1. 直接使用Linux原生绝对路径(推荐)
SQL Server在Linux环境下支持直接识别Linux路径,但需确保mssql服务账户对目标目录有读写权限:
- 先创建并授权目标目录:
sudo mkdir -p /home/work/sql_backups sudo chown mssql:mssql /home/work/sql_backups sudo chmod 700 /home/work/sql_backups - 执行备份语句(绝对路径):
注:BACKUP DATABASE Database TO DISK = '/home/work/sql_backups/backup.bak' WITH INIT;WITH INIT用于覆盖现有备份文件,按需添加。
2. 使用SQL Server模拟的Windows风格路径
SQL Server在Linux上会将Windows路径映射到实际Linux目录,默认D:\rdsdbdata\BACKUP对应Linux的/var/opt/mssql/backup,备份语句可写为:
BACKUP DATABASE Database TO DISK = 'D:\rdsdbdata\BACKUP\backup.bak';
二、取回已生成的备份文件
你提到的D:\rdsdbdata\BACKUP对应的Linux实际路径是/var/opt/mssql/backup,可通过以下方式取回文件:
1. SCP命令(本地为Linux/macOS或Windows PowerShell)
在本地终端执行:
scp ec2-user@你的EC2实例IP:/var/opt/mssql/backup/backup.bak /本地目标保存路径/
2. EC2实例控制台操作
- 先将备份文件复制到普通用户可访问的目录:
sudo cp /var/opt/mssql/backup/backup.bak /home/ec2-user/ sudo chown ec2-user:ec2-user /home/ec2-user/backup.bak - 通过AWS EC2实例连接的文件下载功能,将文件拉取到本地。
注意事项
- 访问SQL Server相关目录需使用
sudo提升权限,因为mssql是服务专用账户,普通用户无直接访问权限。 - 备份前务必确认目标目录权限配置正确,否则会触发权限错误。
内容的提问来源于stack exchange,提问作者Luis Gomez
相关产品推荐
相关产品推荐

