Dropbox是一个云存储和文件同步服务,允许用户在多个设备之间同步和共享文件。除了图形界面外,Dropbox还提供了命令行工具(Dropbox CLI),便于在服务器和终端环境中管理文件同步。
文件更改实时同步到云端和设备
保留文件历史版本(30天或更长)
轻松共享文件和文件夹链接
支持Linux, Windows, macOS, iOS, Android
256位AES加密传输和存储
完整的CLI用于自动化管理
Dropbox客户端采用客户端-服务器架构,本地守护进程与云端服务器同步:
# Dropbox组件结构
1. Dropbox守护进程 (dropboxd) - 核心同步引擎
2. Dropbox CLI (dropbox) - 命令行控制工具
3. Nautilus集成 - 文件管理器集成(可选)
4. 系统托盘图标 - 状态指示器(GUI环境)
# 数据流向:
本地文件 ↔ Dropbox守护进程 ↔ Dropbox云服务器 ↔ 其他设备
# 默认目录结构:
~/Dropbox/ # 主同步目录
~/.dropbox/ # 配置和缓存目录
~/.dropbox-dist/ # Dropbox程序文件
/var/lib/dropbox/ # 系统级安装(某些发行版)
# 方法1:使用官方脚本安装(推荐)
cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -
# 方法2:使用包管理器(部分发行版)
# Ubuntu/Debian
sudo apt update
sudo apt install dropbox
# 或下载.deb包手动安装
wget https://www.dropbox.com/download?dl=packages/ubuntu/dropbox_2020.03.04_amd64.deb
sudo dpkg -i dropbox*.deb
# 启动Dropbox守护进程
~/.dropbox-dist/dropboxd
# 方法3:使用Python脚本(旧方法)
cd ~ && wget -O - "https://www.dropbox.com/download?dl=packages/dropbox.py" > dropbox.py
chmod +x dropbox.py
# 安装CLI工具
sudo cp dropbox.py /usr/local/bin/dropbox
# 或
sudo mv dropbox.py /usr/local/bin/dropbox-cli
# Ubuntu/Debian(桌面版)
sudo apt update
sudo apt install nautilus-dropbox
# Fedora
sudo dnf install nautilus-dropbox
# Arch Linux
sudo pacman -S dropbox
# 或从AUR安装
yay -S dropbox
# 安装后启动
dropbox start -i # -i 参数会安装系统托盘图标
# 验证安装
dropbox status
dropbox version
# 1. 首次运行需要链接账户
# 启动Dropbox守护进程
~/.dropbox-dist/dropboxd
# 2. 控制台会显示链接URL,复制到浏览器中登录
# 示例输出:
# This computer isn't linked to any Dropbox account...
# Please visit https://www.dropbox.com/cli_link?host_id=XXX to link this device.
# 3. 或者使用已有账户的配置文件(迁移时有用)
# 停止Dropbox
dropbox stop
# 复制配置文件
cp -r ~/.dropbox ~/.dropbox.bak
# 从其他机器复制以下文件:
# ~/.dropbox/instance1/(包含config.db和hostkeys)
# ~/.dropbox/instance1/config.dbx(加密配置文件)
# 4. 查看账户信息
dropbox lansync # 查看LAN同步状态
dropbox proxy # 查看代理设置
# 5. 切换账户(需要先卸载)
dropbox stop
rm -rf ~/.dropbox
~/.dropbox-dist/dropboxd # 重新链接新账户
dropbox start
dropbox stop
dropbox status
dropbox autostart y
dropbox exclude add ~/Dropbox/Downloads
dropbox ls
| 命令 | 描述 | 示例 |
|---|---|---|
dropbox start |
启动Dropbox守护进程 | dropbox start |
dropbox stop |
停止Dropbox守护进程 | dropbox stop |
dropbox status |
显示当前同步状态 | dropbox status |
dropbox autostart |
启用/禁用开机自启 | dropbox autostart y |
dropbox exclude |
管理排除的文件夹 | dropbox exclude list |
dropbox ls |
列出Dropbox中的文件 | dropbox ls /Photos |
dropbox filestatus |
查看文件同步状态 | dropbox filestatus ~/Dropbox/file.txt |
dropbox sharelink |
创建共享链接 | dropbox sharelink ~/Dropbox/file.txt |
dropbox puburl |
创建公开链接(已弃用) | dropbox puburl ~/Dropbox/file.txt |
dropbox proxy |
设置代理服务器 | dropbox proxy manual http://proxy:8080 |
dropbox lansync |
启用/禁用LAN同步 | dropbox lansync y |
dropbox throttle |
设置上传/下载速度限制 | dropbox throttle 1024 2048 |
dropbox version |
显示版本信息 | dropbox version |
dropbox help |
显示帮助信息 | dropbox help |
dropbox running |
检查Dropbox是否在运行 | dropbox running |
dropbox autoupdate |
管理自动更新 | dropbox autoupdate status |
# 1. 查看当前排除的文件夹
dropbox exclude list
# 2. 排除文件夹(不再同步到本地)
dropbox exclude add ~/Dropbox/Videos
dropbox exclude add ~/Dropbox/Backups
# 3. 重新包含文件夹(恢复同步)
dropbox exclude remove ~/Dropbox/Videos
# 4. 批量排除多个文件夹
for folder in Videos Music Downloads; do
dropbox exclude add ~/Dropbox/$folder
done
# 5. 查看排除状态
dropbox exclude list
# 6. 选择性同步的配置文件位置
# ~/.dropbox/instance1/config.dbx
# 可以使用sqlite3查看
sqlite3 ~/.dropbox/instance1/config.dbx "SELECT * FROM selective_sync;"
# 7. 通过API管理选择性同步(高级)
# 停止Dropbox后编辑配置文件
dropbox stop
# 编辑配置文件(谨慎操作)
# 配置文件格式为JSON,包含excluded_folders列表
# 1. 创建共享链接(需要网络连接)
dropbox sharelink ~/Dropbox/Documents/report.pdf
# 输出:https://www.dropbox.com/s/xxxxxxxxx/report.pdf?dl=0
# 2. 共享整个文件夹
dropbox sharelink ~/Dropbox/Projects/
# 3. 创建直接下载链接(替换dl=0为dl=1)
# 原始链接: https://www.dropbox.com/s/xxxxxxxxx/file.zip?dl=0
# 下载链接: https://www.dropbox.com/s/xxxxxxxxx/file.zip?dl=1
# 4. 使用API创建共享链接(curl示例)
# 需要访问令牌
ACCESS_TOKEN="your_access_token"
curl -X POST https://api.dropboxapi.com/2/sharing/create_shared_link_with_settings \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data '{"path":"/file.txt"}'
# 5. 查看共享链接列表
curl -X POST https://api.dropboxapi.com/2/sharing/list_shared_links \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data '{}' | jq .
# 6. 撤销共享链接
curl -X POST https://api.dropboxapi.com/2/sharing/revoke_shared_link \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data '{"url":"https://www.dropbox.com/s/xxxxxxxxx/file.txt?dl=0"}'
# 1. 设置代理服务器
# 无代理
dropbox proxy none
# 自动检测
dropbox proxy auto
# 手动设置HTTP代理
dropbox proxy manual http://proxy.example.com:8080
# 手动设置SOCKS5代理
dropbox proxy manual socks5://proxy.example.com:1080
# 需要认证的代理
dropbox proxy manual http://user:pass@proxy.example.com:8080
# 2. 带宽限制
# 设置上传限制(KB/s)
dropbox throttle 1024
# 设置下载限制(KB/s)
dropbox throttle 1024 2048 # 上传1024KB/s,下载2048KB/s
# 3. 禁用带宽限制
dropbox throttle
# 4. 启用LAN同步(加速局域网内设备同步)
dropbox lansync y
# 5. 查看当前网络设置
dropbox proxy
dropbox throttle
dropbox lansync
# 1. 开机自动启动
dropbox autostart y # 启用
dropbox autostart n # 禁用
dropbox autostart # 查看状态
# 2. 自动更新管理
dropbox autoupdate status # 查看更新状态
dropbox autoupdate on # 启用自动更新
dropbox autoupdate off # 禁用自动更新
# 3. 手动检查更新
# Dropbox会自动检查更新,也可手动触发
# 重启Dropbox服务通常会触发更新检查
# 4. 查看当前版本
dropbox version
# 5. 系统服务配置(systemd)
# 创建服务文件
sudo tee /etc/systemd/system/dropbox.service << EOF
[Unit]
Description=Dropbox Service
After=network.target
[Service]
Type=simple
User=$USER
ExecStart=$HOME/.dropbox-dist/dropboxd
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
# 启用并启动服务
sudo systemctl daemon-reload
sudo systemctl enable dropbox
sudo systemctl start dropbox
sudo systemctl status dropbox
# 1. 获取访问令牌
# 访问 https://www.dropbox.com/developers/apps
# 创建应用 -> 选择权限 -> 获取访问令牌
# 2. 基本API调用示例
ACCESS_TOKEN="your_access_token"
# 上传文件
curl -X POST https://content.dropboxapi.com/2/files/upload \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Dropbox-API-Arg: {\"path\": \"/test.txt\",\"mode\": \"add\",\"autorename\": true,\"mute\": false}" \
--header "Content-Type: application/octet-stream" \
--data-binary @localfile.txt
# 下载文件
curl -X POST https://content.dropboxapi.com/2/files/download \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Dropbox-API-Arg: {\"path\": \"/test.txt\"}" \
-o downloaded.txt
# 列出文件
curl -X POST https://api.dropboxapi.com/2/files/list_folder \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data '{"path": "","recursive": false,"include_media_info": false,"include_deleted": false}' | jq .
# 3. 使用Python SDK
pip install dropbox
# Python示例
import dropbox
dbx = dropbox.Dropbox(ACCESS_TOKEN)
# 上传文件
with open("localfile.txt", "rb") as f:
dbx.files_upload(f.read(), "/test.txt")
# 列出文件
for entry in dbx.files_list_folder("").entries:
print(entry.name)
# 4. 监控Dropbox事件(使用webhooks)
# 配置webhook接收器,监听文件变化
# 参考:https://www.dropbox.com/developers/reference/webhooks
# 文件不同步
# 解决方案:
# 1. 检查状态
dropbox status
# 2. 重新索引
dropbox stop
rm -rf ~/.dropbox/instance1/cache*
dropbox start
# 3. 检查磁盘空间
df -h ~/
df -h ~/Dropbox
# 4. 检查文件权限
ls -la ~/Dropbox/
chmod 755 ~/Dropbox
# 5. 查看详细日志
tail -f ~/.dropbox/error.log
tail -f ~/.dropbox/dropbox.log
# 无法连接服务器
# 解决方案:
# 1. 检查网络连接
ping dropbox.com
# 2. 检查代理设置
dropbox proxy
# 3. 检查防火墙
sudo ufw status
# 允许Dropbox端口
sudo ufw allow out 443/tcp
sudo ufw allow out 80/tcp
# 4. 重置网络配置
dropbox proxy none
dropbox lansync y
# 5. 检查DNS
nslookup dropbox.com
# 或使用Google DNS
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
# 同步速度慢
# 解决方案:
# 1. 调整带宽限制
dropbox throttle 2048 4096
# 2. 启用LAN同步
dropbox lansync y
# 3. 排除大文件夹
dropbox exclude add ~/Dropbox/Videos
# 4. 清理缓存
dropbox stop
rm -rf ~/.dropbox/instance1/cache*
# 注意:这会导致重新索引,首次较慢
# 5. 检查系统资源
top -u $USER
iotop
# 配置错误或损坏
# 解决方案:
# 1. 验证配置文件
ls -la ~/.dropbox/
# 检查config.dbx文件是否存在
# 2. 重新链接账户
dropbox stop
rm -rf ~/.dropbox
~/.dropbox-dist/dropboxd
# 3. 重新安装CLI
cd ~ && wget -O - "https://www.dropbox.com/download?dl=packages/dropbox.py" > dropbox.py
chmod +x dropbox.py
sudo cp dropbox.py /usr/local/bin/dropbox
# 4. 查看帮助
dropbox help
dropbox --help
#!/bin/bash
# dropbox-monitor.sh - 监控Dropbox状态
LOG_FILE="/var/log/dropbox-monitor.log"
ALERT_EMAIL="admin@example.com"
MAX_RETRIES=3
# 检查Dropbox状态
check_dropbox() {
if ! dropbox running; then
echo "[$(date)] Dropbox未运行,尝试启动..." >> "$LOG_FILE"
dropbox start
# 等待并检查
sleep 10
if dropbox running; then
echo "[$(date)] Dropbox启动成功" >> "$LOG_FILE"
else
echo "[$(date)] Dropbox启动失败" >> "$LOG_FILE"
send_alert "Dropbox服务启动失败"
fi
fi
}
# 检查同步状态
check_sync_status() {
local status=$(dropbox status | head -1)
if [[ "$status" == *"Up to date"* ]]; then
echo "[$(date)] 同步状态正常: $status" >> "$LOG_FILE"
elif [[ "$status" == *"Syncing"* ]]; then
echo "[$(date)] 正在同步: $status" >> "$LOG_FILE"
elif [[ "$status" == *"Connecting"* ]]; then
echo "[$(date)] 正在连接: $status" >> "$LOG_FILE"
else
echo "[$(date)] 同步状态异常: $status" >> "$LOG_FILE"
send_alert "Dropbox同步状态异常: $status"
fi
}
# 检查磁盘空间
check_disk_space() {
local usage=$(df -h ~/ | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$usage" -gt 90 ]; then
echo "[$(date)] 磁盘空间不足: $usage%" >> "$LOG_FILE"
send_alert "Dropbox磁盘空间不足: $usage%"
fi
}
# 发送警报
send_alert() {
local message="$1"
if command -v mail &> /dev/null; then
echo "$message" | mail -s "Dropbox监控警报" "$ALERT_EMAIL"
fi
}
# 主监控循环
main() {
echo "=== Dropbox监控开始 ===" >> "$LOG_FILE"
check_dropbox
check_sync_status
check_disk_space
echo "=== Dropbox监控结束 ===" >> "$LOG_FILE"
}
# 执行监控
main
| 特性对比 | Dropbox | Nextcloud | Syncthing |
|---|---|---|---|
| 架构 | 云存储服务 | 自托管 | P2P去中心化 |
| 成本 | 免费有限,付费扩容 | 免费(自备服务器) | 完全免费 |
| 隐私控制 | 数据在第三方服务器 | 数据完全自主控制 | 端到端加密 |
| 版本历史 | 30天(免费)或更长 | 可配置 | 内置版本控制 |
| 选择性同步 | 支持 | 支持 | 支持 |
| 命令行工具 | 功能完整 | 通过WebDAV/API | API和CLI |
| 适用场景 | 个人/团队云存储、文件共享 | 企业自建云盘、团队协作 | 多设备直接同步、隐私保护 |
~/.dropbox目录)#!/bin/bash
# dropbox-backup.sh
BACKUP_SRC="/home/user/important-data"
BACKUP_DEST="$HOME/Dropbox/Backups"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="backup-$DATE.tar.gz"
# 检查Dropbox状态
if ! dropbox running; then
echo "Dropbox未运行,启动中..."
dropbox start
sleep 30
fi
# 创建备份
echo "创建备份: $BACKUP_FILE"
tar -czf "/tmp/$BACKUP_FILE" "$BACKUP_SRC"
# 移动到Dropbox目录
mv "/tmp/$BACKUP_FILE" "$BACKUP_DEST/"
# 检查同步状态
sleep 10
if dropbox filestatus "$BACKUP_DEST/$BACKUP_FILE" | grep -q "up to date"; then
echo "备份已同步到Dropbox: $BACKUP_DEST/$BACKUP_FILE"
# 清理旧备份(保留最近7天)
find "$BACKUP_DEST" -name "backup-*.tar.gz" -mtime +7 -delete
echo "已清理7天前的旧备份"
else
echo "警告:备份文件可能尚未同步完成"
fi
#!/bin/bash
# dropbox-report.sh
REPORT_FILE="$HOME/Dropbox-Reports/report-$(date +%Y%m%d).txt"
LOG_DIR="$HOME/Dropbox-Reports/logs"
mkdir -p "$(dirname "$REPORT_FILE")"
mkdir -p "$LOG_DIR"
echo "=== Dropbox同步状态报告 ===" > "$REPORT_FILE"
echo "生成时间: $(date)" >> "$REPORT_FILE"
echo "=========================" >> "$REPORT_FILE"
# 1. 检查Dropbox运行状态
echo -e "\n1. 运行状态:" >> "$REPORT_FILE"
if dropbox running; then
echo " ✓ Dropbox正在运行" >> "$REPORT_FILE"
else
echo " ✗ Dropbox未运行" >> "$REPORT_FILE"
fi
# 2. 同步状态
echo -e "\n2. 同步状态:" >> "$REPORT_FILE"
dropbox status >> "$REPORT_FILE" 2>&1
# 3. 排除的文件夹
echo -e "\n3. 排除的文件夹:" >> "$REPORT_FILE"
dropbox exclude list >> "$REPORT_FILE" 2>&1
# 4. 磁盘使用情况
echo -e "\n4. 磁盘使用情况:" >> "$REPORT_FILE"
df -h ~/ | grep -v Filesystem >> "$REPORT_FILE"
# 5. Dropbox文件夹大小
echo -e "\n5. Dropbox文件夹大小:" >> "$REPORT_FILE"
du -sh ~/Dropbox/ 2>/dev/null || echo "Dropbox文件夹不存在" >> "$REPORT_FILE"
# 6. 最近修改的文件
echo -e "\n6. 最近修改的文件(最近24小时):" >> "$REPORT_FILE"
find ~/Dropbox -type f -mtime -1 -exec ls -lh {} \; 2>/dev/null | head -20 >> "$REPORT_FILE"
echo -e "\n=== 报告结束 ===" >> "$REPORT_FILE"
# 记录日志
cp "$REPORT_FILE" "$LOG_DIR/"
echo "报告已生成: $REPORT_FILE"
echo "日志已保存到: $LOG_DIR/"