如何将youtube-dl默认下载路径设置到远程服务器及FTP服务器?
嘿,我来帮你搞定这两个关于youtube-dl远程下载路径的问题!下面分情况给你详细讲:
1. 将youtube-dl默认下载位置设置到远程服务器
如果你的远程服务器支持文件系统挂载(比如Linux服务器用SSH、NFS协议),操作起来最直接:
- 第一步:把远程服务器的目标目录挂载到本地
以SSH为例,先安装sshfs(Ubuntu/Debian:sudo apt install sshfs;macOS用Homebrew:brew install sshfs),然后执行挂载命令:
比如sshfs your-remote-user@remote-server-ip:/path/to/remote/folder /local/mount/pointsshfs john@192.168.1.100:/home/john/youtube-downloads ~/remote-youtube,这样远程目录就映射到本地的~/remote-youtube文件夹了。 - 第二步:修改youtube-dl的默认配置
youtube-dl会读取用户目录下的配置文件来设置默认参数:- Linux/macOS:创建或编辑
~/.config/youtube-dl/config - Windows:创建或编辑
%APPDATA%\youtube-dl\config
在配置文件里添加一行:
替换成你的本地挂载路径,比如-o /local/mount/point/%(title)s.%(ext)s-o ~/remote-youtube/%(title)s.%(ext)s。之后再用youtube-dl下载时,就会默认把文件存到挂载的远程目录里了。 - Linux/macOS:创建或编辑
2. 将youtube-dl下载位置改为FTP服务器(完全可行!)
youtube-dl本身没有直接输出到FTP的参数,但有两种可靠的方法实现:
方法一:先下载到本地,自动上传到FTP
适合不想挂载远程目录的情况,用脚本结合youtube-dl和FTP工具(比如lftp):
- 先安装
lftp(Ubuntu/Debian:sudo apt install lftp) - 创建一个bash脚本(比如
youtube-dl-ftp.sh),内容如下:#!/bin/bash # 临时本地下载目录 TEMP_DIR="/tmp/youtube-tmp" mkdir -p "$TEMP_DIR" # 第一步:下载视频到临时目录 youtube-dl -o "$TEMP_DIR/%(title)s.%(ext)s" "$1" # 获取刚下载的文件名 DOWNLOAD_FILE=$(youtube-dl --get-filename -o "$TEMP_DIR/%(title)s.%(ext)s" "$1") # 第二步:上传到FTP服务器 lftp -u your-ftp-username,your-ftp-password ftp://your-ftp-server-ip <<EOF cd /path/on/ftp # 切换到FTP上的目标目录 put "$DOWNLOAD_FILE" quit EOF # 可选:删除本地临时文件 rm "$DOWNLOAD_FILE" - 给脚本加执行权限:
chmod +x youtube-dl-ftp.sh - 使用时直接传视频链接:
./youtube-dl-ftp.sh https://www.youtube.com/watch?v=xxxxxx
方法二:把FTP目录挂载为本地目录(更省心,像本地文件夹一样用)
用curlftpfs工具把FTP目录挂载成本地文件夹,之后就可以像设置普通远程服务器一样配置youtube-dl:
- 安装
curlftpfs(Ubuntu/Debian:sudo apt install curlftpfs) - 创建本地挂载点:
mkdir ~/ftp-youtube - 挂载FTP目录:
如果FTP需要被动模式,可加参数:curlftpfs ftp://your-ftp-username:your-ftp-password@your-ftp-server-ip/path/on/ftp ~/ftp-youtubecurlftpfs -o allow_other,ftp_port_range=40000-50000 ftp://... - 同样修改youtube-dl的配置文件,添加:
之后youtube-dl就会默认把文件直接写到FTP服务器上了。-o ~/ftp-youtube/%(title)s.%(ext)s
注意事项
- 挂载远程目录时,确保网络稳定,断开挂载可能导致下载失败;
- FTP服务器要开启写入权限,并且你的账号有对应目录的读写权限;
- 脚本里的密码如果不想明文写,可以用环境变量或者配置文件(比如
lftp的~/.lftprc)来加密存储。
内容的提问来源于stack exchange,提问作者Vikram Khan
相关产品推荐
相关产品推荐

