esk*_*tos 12 webdav https command-line
我面临着一个相当简单的情况,我必须将一个大文件树按原样上传到可通过 HTTPS 访问的WebDAV服务器。我必须仅使用命令行从 linux 框开始上传。我可以在盒子上安装程序。
我试过尸体,但它不支持递归目录上传。
您知道实现这一目标的简单工具/脚本吗?
好的,我找到了可以做到的东西。
我从davpush.pl
可以在这里找到的脚本开始https://github.com/ptillemans/davpush
需要进行一些更改:
dav://
”替换为“ https://
”print POUT "open";
”前加“ print POUT $script;
”该死,不得不破解一个 perl 脚本来简单地上传一个粗鲁的目录。我仍在寻找简单的工具/脚本。
小智 9
这是一个快速破解的 shell 脚本,允许使用cadaver 执行此操作:
#!/bin/sh
usage () { echo "$0 <src> <cadaver-args>*" >/dev/stderr; }
error () { echo "$1" >/dev/stderr; usage; exit 1; }
test $# '<' 3 || \
error "Source and cadaver arguments expected!";
src="$1"; shift;
test -r "$src" || \
error "Source argument should be a readable file or directory!";
cd "$(dirname "$src")";
src="$(basename "$src")";
root="$(pwd)";
rc="$(mktemp)";
{
find "$src" '(' -type d -a -readable ')' \
-printf 'mkcol "%p"\n';
find "$src" '(' -type f -a -readable ')' \
-printf 'cd "%h"\nlcd "%h"\n' \
-printf 'mput "%f"\n' \
-printf 'cd -\nlcd "'"$root"'"\n';
echo "quit";
} > "$rc";
cadaver -r "$rc" "$@";
rm -f "$rc";
Run Code Online (Sandbox Code Playgroud)
如果它被命名,davcpy.sh
那么命令如下
davcpy.sh "<local-directories>/<dirname>" "https://<target-website>/<some-directories>/"
Run Code Online (Sandbox Code Playgroud)
允许递归复制
<local-directories>/<dirname>
Run Code Online (Sandbox Code Playgroud)
进入一个名为
<some-directories>/<dirname>
Run Code Online (Sandbox Code Playgroud)
请注意,它使用 的脚本工具cadaver
仍然允许交互式输入登录名/密码。我认为它也足够强大,可以处理包含空格的奇怪文件和目录名称,但我没有测试任何类似的情况。
小智 6
解决方案可能是Rclone。这是一种单向命令行同步程序,类似于 rsync,支持 WebDAV(以及其他)。它可以递归地复制目录,跳过目标上存在的文件。它有一些命令行选项来控制同步行为,例如,如果目标文件从源中消失,您是否希望将其删除。许多发行版都有可用的软件包,但您也可以安装并运行纯二进制文件。第一次,您需要定义一个“远程”:
rclone config create my-remote webdav \
url https://my-webdav-server/my-dir/ \
vendor other \
user 'onno' pass 'mypasswd'
Run Code Online (Sandbox Code Playgroud)
之后,您可以复制或同步文件和目录:
rclone copy /home/onno/mydir my-remote:
Run Code Online (Sandbox Code Playgroud)
尝试gnomevfs-copy
:
编辑:gvfs-copy 不是递归的。我修补了它,但尚未发布代码。与此同时,请检查来自 perldav 的dave。它进行递归传输。
如果你没有禁用fuse,你可以尝试davfs2
如果您不反对编写自己的工具,您可以使用 gvfs 并从gvfs-copy 的源代码中获得灵感
我遇到了类似的问题,所以我可能会提供更好的解决方案
归档时间: |
|
查看次数: |
13442 次 |
最近记录: |