我又来求助了,想定时把 windows 指定目录下面的文件拷贝到 Linux 上面怎么实现呢?

2018-01-17 17:21:10 +08:00
 fengxueshangu

渣渣测试一枚,现在想写一个 python 小脚本,就是定时把一个 win7 上面一个固定目录下的文件拷贝到 linux 上,脚本运行在这个 linux 上面,想了几个库,貌似都不好实现阿,主要是 win7 上面没开启什么服务,有没有简便一点的方法,多谢各位大神指点了。

5619 次点击
所在节点    Python
31 条回复
yangzhezjgs
2018-01-17 17:37:30 +08:00
虚拟机?
WO31400
2018-01-17 17:38:45 +08:00
生成 exe,运行
anjingme
2018-01-17 17:40:13 +08:00
linux 搞个 samba、nfs 服务,共享给 win7 挂载上,然后定时任务( seccopy 这类软件)把 win7 上文件拷贝到这个挂载目录上
annielong
2018-01-17 17:41:23 +08:00
先 smb 共享?
geelaw
2018-01-17 17:42:37 +08:00
Windows 上用 Task Scheduler 就可以把文件复制出去啦
FreeEx
2018-01-17 17:47:47 +08:00
只需要程序跑在 win7 上就好了,ftp 往 linux 上传。
h4lbhg1G
2018-01-17 17:53:10 +08:00
好吧,我再来推广我的 CommandTrayHost

CommandTrayHost 有一个 crontab 功能,可以精确到秒。然后如果装一个 cygwin,那么你可以用 scp 来传文件。

写一个 bat 防如下内容

@ echo off
C:\cygwin64\bin\bash --login -c "cd ~/work; ./upload.sh"

然后写一个 update.sh 内容如下

#!/bin/bash

rsync -rltcv --no-perms --progress --compress -e ssh nginx/nginx.conf nginx/sites-available nginx/snippets root@114.114.114.114:/etc/nginx/
h4lbhg1G
2018-01-17 17:55:53 +08:00
然后加一个 CommandTrayHost 的配置如下

{
"name": "自动上传",
"path": "C:\\Windows\\System32",
"cmd": "cmd.exe upload.bat",
"working_directory": "D:\\bat_script",
"addition_env_path": "",
"use_builtin_console": false,
"is_gui": false,
"enabled": false,
// 可选
"start_show": false,
"crontab_config": { // crontab 配置
"crontab": "5 */6 * * * *", // 每 6 分钟上传一次
"method": "restart", // 支持的有 start restart stop
"count": 0, // 0 表示不只限制,大于 0 的整数,表示运行多少次就不运行了
},
},
vibbow
2018-01-17 17:56:40 +08:00
非轮子的话,就直接用 goodsync
imn1
2018-01-17 17:57:57 +08:00
同步省事多了
vibbow
2018-01-17 17:58:09 +08:00
或者用 rclond + 计划任务
imcnan
2018-01-17 17:58:15 +08:00
你如果用的是 vm 虚拟机,可以直接使用目录映射,在 Linux 里直接访问 windows 的对应目录。
h4lbhg1G
2018-01-17 17:58:18 +08:00
嗯 上面的有个问题 enabled 要改成 true 才能一打开就自动运行。我发现我好像歪题了,赶紧逃<_
vibbow
2018-01-17 17:58:21 +08:00
@vibbow #11 更正:rclone
tushankaka
2018-01-17 17:58:42 +08:00
定时 scp 不行么。(我也不知道对不对。。)
imcnan
2018-01-17 17:59:05 +08:00
如果是两个隔离的机器,你就直接在 win7 上启动一个简单的 httpfileserver 吧,用 python 起一个就行了,或者用别的。
kemad
2018-01-17 18:03:19 +08:00
可以不同步,有条件的话,Windows 开共享,Linux 上 smbmount,搞定。
Beebird
2018-01-17 18:05:04 +08:00
假定 Windows 和 Linux 在同一子网,我用过两种方法:
1. Windows 装 sshd 服务(记不清是否依赖 cygwin 了),Linux 定时用 scp 或 rsync
2. Windows 目录设置共享,Linux 上将该目录用 cifs 挂载到本地。

根据经验,第二种更可靠,不依赖额外的服务。
songz
2018-01-17 18:06:54 +08:00
两边安个 resilio 搞定
clino
2018-01-17 18:10:26 +08:00
syncthing

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/423682

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX