PeterDing / BaiduPCS-Py

BaiduPCS API & App 百度网盘客户端 和 API
MIT License
698 stars 113 forks source link

[已解决] 关于在Borg增量备份的客户端Vorta中,备份完成后,自动执行通过bash脚本进行百度云同步时出现的问题 #34

Closed iPixelOldC closed 3 years ago

iPixelOldC commented 3 years ago

错误日志(重点就这一句,样子大概不是这样,前面还会跟个BaiduPCS-Py的版本号,但我剪贴板里面被覆盖掉了,反正就是有这一行句子):[Errno 25] Inappropriate ioctl for device

这个问题已经解决了,我发这个issue,只是记录一下,方便后来者解决,如果需要利用BaiduPCS-Py进行Borg备份同步时,在Vorta中怎么也无法同步成功,而在终端里面却可以的问题。

这其实是个通病,用这里的话说,就是BaiduPCS-Py只能在一个终端里面运行,在其他地方是无法运行的(如Vorta的子进程下)。我的实测也是这样的。但是隔壁Rclone却可以运行,所以不知道是软件本身的问题(包括Vorta,不知道Rclone是怎么处理这种情况的),还是语言/库本身的问题。

This would happen if stdout isn't a terminal (e,g,, redirecting to a file or run as a subprocess and its a pipe). There are different terminal types, like physical terminal attached via a serial line, that may not accept that ioctl. But if this is a linux machine and its default terminal emulator, it should work. Just guesses here. – tdelaney Aug 10 '20 at 18:26 https://stackoverflow.com/questions/63345739/ioerror-errno-25-inappropriate-ioctl-for-device

目前的解决方法就是在一个终端里面跑BaiduPCS-Py,比如我是在BaiduPCS-Py命令前面加了个Kitty命令(kitty BaiduPCS-Py sync /xxx /xxx)。这个命令会让BaiduPCS-Py在Kitty这个终端里面运行。这样就可以执行成功了。当然你可以换其他的终端。反正是个 终端就行。

系统环境

PeterDing commented 3 years ago

BaiduPCS-Py 上传文件时会开启键盘监听,按 p 开始或暂停上传。这个需要 BaiduPCS-Py 在终端下运行。 没有考虑到在 gui 中调用的情况。这种情况下键盘监听会报错。我加一个是否在终端下运行的判断就行了。

PeterDing commented 3 years ago

已在 v0.6.16 修复。

iPixelOldC commented 3 years ago

已在 v0.6.16 修复。

哦哦哦,好的,谢谢。现在使用已经没有问题了。