megasync是MEGA云存储的官方同步客户端,允许用户在本地计算机和MEGA云存储之间同步文件和文件夹。MEGA提供端到端加密的云存储服务,注重用户隐私和数据安全。
客户端加密,只有用户能解密数据
免费提供20GB存储空间
本地和云端文件实时同步
加密共享文件和文件夹链接
保留文件历史版本
支持Linux, Windows, macOS, 移动端
MEGA采用客户端加密机制,所有文件在上传前在客户端加密:
# MEGA加密流程:
1. 客户端生成随机加密密钥
2. 使用AES-128算法加密文件
3. 加密密钥用用户的主密钥加密
4. 加密后的密钥和文件一起上传
# 客户端组件:
1. megasync - 同步守护进程
2. mega-cmd - 命令行工具
3. nautilus-megasync - 文件管理器集成(可选)
# 数据安全特性:
- 端到端加密(零知识架构)
- 双因素认证(2FA)支持
- 登录通知和会话管理
- 文件完整性验证
# Ubuntu/Debian(官方仓库)
# 添加MEGA仓库
sudo apt-get install curl
curl -fsSL https://mega.nz/linux/repo/xUbuntu_22.04/Release.key | sudo gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/mega.gpg > /dev/null
sudo echo "deb https://mega.nz/linux/repo/xUbuntu_22.04/ ./" | sudo tee /etc/apt/sources.list.d/mega.list
sudo apt update
sudo apt install megasync
# 安装文件管理器集成
sudo apt install nautilus-megasync # GNOME
# 或
sudo apt install nemo-megasync # Cinnamon
# 或
sudo apt install dolphin-megasync # KDE
# Fedora/RHEL
sudo dnf install megasync
# Arch Linux(AUR)
yay -S megasync-bin
# 或
yay -S megasync
# Ubuntu/Debian
sudo apt install megacmd
# 手动安装
# 下载最新版本:https://mega.nz/cmd
wget https://mega.nz/linux/repo/xUbuntu_22.04/amd64/megacmd-xUbuntu_22.04_amd64.deb
sudo dpkg -i megacmd*.deb
sudo apt install -f
# 验证安装
mega-version
mega-help
# 服务器安装(无GUI)
# 仅安装命令行工具
sudo apt install megacmd --no-install-recommends
# 1. 登录MEGA账户
# 启动megasync并登录
# 或使用命令行登录
mega-login email@example.com
# 2. 交互式登录(会提示输入密码)
mega-login
# 3. 使用会话ID登录(避免重复登录)
# 首次登录后保存会话ID
mega-export
# 输出会话ID,保存后用于后续登录
mega-login --session=保存的会话ID
# 4. 查看账户信息
mega-user
mega-quota
mega-credit
# 5. 启用双因素认证(2FA)
# 在Web界面启用2FA
# 然后登录时使用:
mega-login email@example.com -p 密码 -m 2FA代码
# 6. 登出账户
mega-logout
# 7. 管理多个账户
# 使用不同的配置文件
mega-login email1@example.com --config=/path/to/config1
mega-login email2@example.com --config=/path/to/config2
mega-sync /local/path /remote/path
mega-ls /
mega-put file.txt /Cloud
mega-get /Cloud/file.txt
mega-mkdir /Cloud/NewFolder
mega-rm /Cloud/file.txt
| 命令 | 描述 | 示例 |
|---|---|---|
mega-login |
登录MEGA账户 | mega-login user@example.com |
mega-logout |
登出当前账户 | mega-logout |
mega-whoami |
显示当前登录用户 | mega-whoami |
mega-ls |
列出云端文件和目录 | mega-ls /Cloud |
mega-du |
显示磁盘使用情况 | mega-du |
mega-quota |
显示存储配额 | mega-quota |
mega-put |
上传文件到云端 | mega-put file.txt |
mega-get |
从云端下载文件 | mega-get /Cloud/file.txt |
mega-sync |
管理同步文件夹 | mega-sync /local /remote |
mega-mkdir |
创建远程目录 | mega-mkdir /Cloud/Documents |
mega-rm |
删除远程文件/目录 | mega-rm /Cloud/file.txt |
mega-mv |
移动/重命名远程文件 | mega-mv /old /new |
mega-cp |
复制远程文件 | mega-cp /source /dest |
mega-share |
创建共享链接 | mega-share /Cloud/file.txt |
mega-export |
导出文件和文件夹链接 | mega-export /Cloud/file.txt |
mega-import |
导入共享链接 | mega-import https://mega.nz/... |
mega-version |
显示版本信息 | mega-version |
mega-help |
显示帮助信息 | mega-help |
# 1. 创建同步关系(本地↔云端)
mega-sync /home/user/Documents /Cloud/Documents
# 2. 查看所有同步关系
mega-sync
# 3. 移除同步关系
mega-sync -r /home/user/Documents
# 4. 同步特定路径
mega-sync -p /home/user/Documents /Cloud/Documents
# 5. 暂停同步
mega-sync --disable /home/user/Documents
# 6. 恢复同步
mega-sync --enable /home/user/Documents
# 7. 设置排除规则(通过GUI配置)
# 图形界面:同步 -> 高级设置 -> 排除
# 8. 检查同步状态
mega-sync --status
# 9. 强制重新同步
# 删除本地.syncid文件后重启megasync
find ~/MEGA\ Sync -name ".syncid" -delete
# 或通过GUI:同步 -> 重新同步
# 1. 上传单个文件
mega-put localfile.txt /Cloud/
# 2. 上传并重命名
mega-put localfile.txt /Cloud/remotefile.txt
# 3. 上传整个目录
mega-put -c /local/directory /Cloud/
# 4. 下载单个文件
mega-get /Cloud/file.txt
# 5. 下载到指定目录
mega-get /Cloud/file.txt /local/downloads/
# 6. 下载整个目录
mega-get -c /Cloud/directory /local/
# 7. 续传下载(自动支持)
mega-get /Cloud/largefile.iso
# 8. 限制下载速度
mega-get --speed-limit=1024 /Cloud/file.txt # 限制为1MB/s
# 9. 上传时排除某些文件
mega-put --exclude="*.tmp,*.log" /local/ /Cloud/
# 1. 列出云端文件(详细模式)
mega-ls -l /
mega-ls -lh /Cloud # 人类可读格式
# 2. 递归列出目录
mega-ls -r /Cloud/Documents
# 3. 查找文件
mega-find filename.txt
mega-find "*.pdf"
# 4. 创建目录
mega-mkdir /Cloud/NewFolder
mega-mkdir -p /Cloud/Parent/Child/Grandchild # 创建多级目录
# 5. 移动/重命名文件
mega-mv /Cloud/oldname.txt /Cloud/newname.txt
mega-mv /Cloud/file.txt /Cloud/OtherFolder/
# 6. 复制文件
mega-cp /Cloud/source.txt /Cloud/backup.txt
# 7. 删除文件
mega-rm /Cloud/unwanted.txt
# 8. 递归删除目录
mega-rm -r /Cloud/OldFolder
# 9. 清空回收站
mega-rm --recycle --empty
# 1. 创建共享链接(只读)
mega-share /Cloud/Document.pdf
# 输出:https://mega.nz/file/xxxxxxxx#yyyyyyyyyyyyyyyyyyyyyyyy
# 2. 创建文件夹共享链接
mega-share -a /Cloud/SharedFolder
# 3. 创建带密码的共享链接
mega-share -p "mypassword" /Cloud/SecureFile.txt
# 4. 设置链接过期时间
mega-share -e "2024-12-31" /Cloud/TemporaryFile.txt
# 5. 创建可写共享链接(上传链接)
mega-share -w /Cloud/UploadFolder
# 6. 查看所有共享链接
mega-share --list
# 7. 移除共享链接
mega-share -d /Cloud/Document.pdf
# 8. 导入共享链接(保存到自己的云盘)
mega-import https://mega.nz/file/xxxxxxxx#yyyyyyyyyyyyyyyyyyyyyyyy
# 9. 导出解密密钥(允许他人下载加密文件)
mega-export -d /Cloud/EncryptedFile.txt
# 输出包含解密密钥的链接
# 1. 设置定期备份(通过GUI)
# 图形界面:备份 -> 添加备份
# 2. 命令行备份脚本示例
#!/bin/bash
# mega-backup.sh
BACKUP_SRC="/home/user/important-data"
BACKUP_DEST="/Cloud/Backups/$(date +%Y%m%d)"
BACKUP_FILE="backup-$(date +%Y%m%d_%H%M%S).tar.gz"
# 登录MEGA(使用会话ID避免密码)
mega-login --session=保存的会话ID
# 创建备份目录
mega-mkdir -p /Cloud/Backups
mega-mkdir -p "$BACKUP_DEST"
# 创建本地备份
tar -czf "/tmp/$BACKUP_FILE" "$BACKUP_SRC"
# 上传到MEGA
mega-put "/tmp/$BACKUP_FILE" "$BACKUP_DEST/"
# 清理本地临时文件
rm "/tmp/$BACKUP_FILE"
# 清理旧备份(保留最近7天)
# 需要先列出目录,然后删除旧文件
echo "备份完成: $BACKUP_DEST/$BACKUP_FILE"
# 3. 启用版本控制(通过Web界面)
# 网页版:文件属性 -> 版本控制
# 4. 恢复文件版本
# 网页版:右键文件 -> 查看版本 -> 恢复
# 1. 设置代理服务器(通过GUI)
# 图形界面:设置 -> 高级 -> 代理
# 2. 配置文件位置
# 主配置文件
~/.local/share/data/Mega Limited/MEGAsync/
# 或
~/.config/megasync/
# 3. 网络速度限制
# 图形界面:设置 -> 带宽 -> 限制上传/下载速度
# 4. 并行传输设置
# 修改配置文件增加并行连接数
# 编辑 ~/.config/megasync/syncs.cfg
# 添加:maxConnections=8
# 5. 调整缓存大小
# 编辑 ~/.config/megasync/megasync.cfg
# 添加:cacheSize=512 # 单位MB
# 6. 启用详细日志
# 启动时添加参数
megasync --debug
# 7. 查看日志文件
tail -f ~/.local/share/data/Mega\ Limited/MEGAsync/megasync.log
# 8. 重置配置(谨慎操作)
# 停止megasync,删除配置文件后重启
megasync --stop
rm -rf ~/.config/megasync/
rm -rf ~/.local/share/data/Mega\ Limited/MEGAsync/
megasync &
# 1. 启动mega-cmd-server(后台服务)
mega-cmd-server &
# 2. 使用mega-exec发送命令
mega-exec "ls /"
# 3. 自动化脚本示例
#!/bin/bash
# mega-automation.sh
SERVER_PID=""
# 启动服务器
start_server() {
mega-cmd-server &
SERVER_PID=$!
sleep 3 # 等待服务器启动
echo "MEGA-CMD服务器已启动,PID: $SERVER_PID"
}
# 执行MEGA命令
run_mega_cmd() {
mega-exec "$1"
}
# 主脚本
start_server
# 登录
run_mega_cmd "login user@example.com"
# 上传文件
run_mega_cmd "put /local/file.txt /Cloud/"
# 创建共享链接
run_mega_cmd "share /Cloud/file.txt"
# 停止服务器
kill $SERVER_PID
echo "MEGA-CMD服务器已停止"
# 4. 使用WebSocket接口(高级)
# mega-cmd-server支持WebSocket接口
# 端口:7634
# 可用于远程控制和监控
# 文件不同步
# 解决方案:
# 1. 检查服务状态
ps aux | grep megasync
# 2. 重启服务
megasync --stop
megasync &
# 3. 检查网络连接
ping mega.nz
curl -I https://mega.nz
# 4. 检查磁盘空间
df -h ~/
df -h ~/MEGA\ Sync/
# 5. 重置同步数据库
# 删除.syncid文件
find ~/MEGA\ Sync -name ".syncid" -delete
# 重启megasync
# 无法登录
# 解决方案:
# 1. 检查凭据
mega-login --verbose
# 2. 重置密码(通过Web界面)
# https://mega.nz/recovery
# 3. 检查2FA设置
# 确保使用正确的2FA代码
# 4. 清除登录缓存
rm -rf ~/.megaCmd
rm -rf ~/.local/share/data/Mega\ Limited/
# 5. 使用会话ID登录
mega-login --session=保存的会话ID
# 同步速度慢
# 解决方案:
# 1. 调整带宽限制
# GUI:设置 -> 带宽
# 2. 减少同步文件夹数量
mega-sync --list
# 移除不必要的同步
# 3. 排除大文件
# GUI:同步 -> 高级设置 -> 排除
# 4. 增加并行连接
# 编辑配置文件增加maxConnections
# 5. 检查系统资源
top -u $USER
iotop
# 配置错误
# 解决方案:
# 1. 验证配置文件
ls -la ~/.config/megasync/
ls -la ~/.local/share/data/Mega\ Limited/
# 2. 重置配置
megasync --stop
cp -r ~/.config/megasync/ ~/.config/megasync.backup/
rm -rf ~/.config/megasync/
megasync &
# 3. 重新链接同步文件夹
# 需要重新设置所有同步关系
# 4. 查看错误日志
tail -f ~/.local/share/data/Mega\ Limited/MEGAsync/error.log
#!/bin/bash
# mega-monitor.sh
LOG_FILE="/var/log/mega-monitor.log"
ALERT_EMAIL="admin@example.com"
# 检查megasync进程
check_process() {
if ! pgrep -x "megasync" > /dev/null; then
echo "[$(date)] megasync进程未运行,尝试启动..." >> "$LOG_FILE"
megasync &
sleep 5
if pgrep -x "megasync" > /dev/null; then
echo "[$(date)] megasync启动成功" >> "$LOG_FILE"
else
echo "[$(date)] megasync启动失败" >> "$LOG_FILE"
send_alert "megasync进程启动失败"
fi
fi
}
# 检查同步状态
check_sync_status() {
# 通过检查同步文件夹的.syncid文件来判断
for sync_dir in ~/MEGA\ Sync/*/; do
if [ -d "$sync_dir" ]; then
sync_id_file="$sync_dir/.syncid"
if [ -f "$sync_id_file" ]; then
echo "[$(date)] 同步正常: $sync_dir" >> "$LOG_FILE"
else
echo "[$(date)] 同步可能有问题: $sync_dir" >> "$LOG_FILE"
fi
fi
done
}
# 检查磁盘空间
check_disk_space() {
mega_usage=$(du -sh ~/MEGA\ Sync/ 2>/dev/null | awk '{print $1}')
local_usage=$(df -h ~/ | tail -1 | awk '{print $5}' | sed 's/%//')
echo "[$(date)] MEGA同步文件夹大小: $mega_usage" >> "$LOG_FILE"
if [ "$local_usage" -gt 90 ]; then
echo "[$(date)] 本地磁盘空间不足: $local_usage%" >> "$LOG_FILE"
send_alert "磁盘空间不足: $local_usage%"
fi
}
# 检查云端配额
check_quota() {
if command -v mega-quota &> /dev/null; then
quota_info=$(mega-quota 2>/dev/null)
if [ $? -eq 0 ]; then
echo "[$(date)] 云端配额: $quota_info" >> "$LOG_FILE"
fi
fi
}
# 发送警报
send_alert() {
local message="$1"
if command -v mail &> /dev/null; then
echo "$message" | mail -s "MEGA监控警报" "$ALERT_EMAIL"
fi
}
# 主监控循环
main() {
echo "=== MEGA监控开始 ===" >> "$LOG_FILE"
check_process
check_sync_status
check_disk_space
check_quota
echo "=== MEGA监控结束 ===" >> "$LOG_FILE"
}
# 执行监控
main
| 特性对比 | MEGA | Dropbox | Nextcloud |
|---|---|---|---|
| 加密方式 | 端到端加密 | 传输加密 | 可选端到端加密 |
| 免费存储 | 20GB | 2GB | 自托管无限 |
| 开源 | 部分开源 | 闭源 | 完全开源 |
| 共享功能 | 加密共享链接 | 共享链接 | 多种共享方式 |
| 命令行工具 | mega-cmd | dropbox-cli | 通过WebDAV/API |
| 版本控制 | 支持 | 支持 | 支持 |
| 适用场景 | 注重隐私的个人/团队存储 | 主流云存储、团队协作 | 自托管、完全控制数据 |
#!/bin/bash
# mega-batch-upload.sh
UPLOAD_DIR="/home/user/uploads"
MEGA_DEST="/Cloud/Uploads/$(date +%Y%m%d)"
LOG_FILE="/var/log/mega-upload.log"
# 登录MEGA
echo "[$(date)] 登录MEGA..." >> "$LOG_FILE"
mega-login --session=保存的会话ID 2>&1 >> "$LOG_FILE"
if [ $? -ne 0 ]; then
echo "[$(date)] 登录失败" >> "$LOG_FILE"
exit 1
fi
# 创建目标目录
echo "[$(date)] 创建目录: $MEGA_DEST" >> "$LOG_FILE"
mega-mkdir -p "$MEGA_DEST" 2>&1 >> "$LOG_FILE"
# 上传所有文件
echo "[$(date)] 开始上传文件..." >> "$LOG_FILE"
for file in "$UPLOAD_DIR"/*; do
if [ -f "$file" ]; then
filename=$(basename "$file")
echo "[$(date)] 上传: $filename" >> "$LOG_FILE"
mega-put "$file" "$MEGA_DEST/" 2>&1 >> "$LOG_FILE"
if [ $? -eq 0 ]; then
echo "[$(date)] 成功: $filename" >> "$LOG_FILE"
# 可选:上传成功后移动或删除本地文件
# mv "$file" "$UPLOAD_DIR/processed/"
else
echo "[$(date)] 失败: $filename" >> "$LOG_FILE"
fi
fi
done
echo "[$(date)] 批量上传完成" >> "$LOG_FILE"
# 登出(可选)
# mega-logout
#!/bin/bash
# mega-status-report.sh
REPORT_FILE="$HOME/MEGA-Reports/report-$(date +%Y%m%d).txt"
LOG_DIR="$HOME/MEGA-Reports/logs"
mkdir -p "$(dirname "$REPORT_FILE")"
mkdir -p "$LOG_DIR"
echo "=== MEGA同步状态报告 ===" > "$REPORT_FILE"
echo "生成时间: $(date)" >> "$REPORT_FILE"
echo "=========================" >> "$REPORT_FILE"
# 1. 检查进程状态
echo -e "\n1. 进程状态:" >> "$REPORT_FILE"
if pgrep -x "megasync" > /dev/null; then
echo " ✓ megasync正在运行" >> "$REPORT_FILE"
echo " PID: $(pgrep -x "megasync")" >> "$REPORT_FILE"
else
echo " ✗ megasync未运行" >> "$REPORT_FILE"
fi
# 2. 同步文件夹状态
echo -e "\n2. 同步文件夹:" >> "$REPORT_FILE"
find ~/MEGA\ Sync -maxdepth 2 -name ".syncid" -exec dirname {} \; 2>/dev/null | while read dir; do
size=$(du -sh "$dir" 2>/dev/null | cut -f1)
echo " - $dir ($size)" >> "$REPORT_FILE"
done
# 3. 本地磁盘使用
echo -e "\n3. 本地磁盘使用:" >> "$REPORT_FILE"
df -h ~/ | grep -v Filesystem >> "$REPORT_FILE"
# 4. MEGA文件夹大小
echo -e "\n4. MEGA同步文件夹总大小:" >> "$REPORT_FILE"
du -sh ~/MEGA\ Sync/ 2>/dev/null >> "$REPORT_FILE" || echo " 文件夹不存在" >> "$REPORT_FILE"
# 5. 检查云端配额(如果已登录)
if command -v mega-quota &> /dev/null; then
echo -e "\n5. 云端配额:" >> "$REPORT_FILE"
mega-quota 2>/dev/null >> "$REPORT_FILE" || echo " 未登录或无法获取" >> "$REPORT_FILE"
fi
# 6. 最近修改的文件
echo -e "\n6. 最近修改的文件(最近24小时):" >> "$REPORT_FILE"
find ~/MEGA\ Sync -type f -mtime -1 -exec ls -lh {} \; 2>/dev/null | head -10 >> "$REPORT_FILE"
echo -e "\n=== 报告结束 ===" >> "$REPORT_FILE"
# 记录日志
cp "$REPORT_FILE" "$LOG_DIR/"
echo "报告已生成: $REPORT_FILE"
echo "日志已保存到: $LOG_DIR/"