日常工作中经常涉及到系统间的文件传输,下面就简单说一下常用的方法
 
linux——windows
     工具:winscp、SecureCRT、Zmodem(sz, rz)
 
linux——linux
     工具:scp、rsync (具体用法,参照man手册)
 
通用方法:Python快捷搭建http服务器
  一、直接使用python的SimpleHTTPServer 模块搭建http下载服务器(只能下载不能上传)

python -m SimpleHTTPServer 8000   
#将当前目录作为http下载服务器的根目录,可以使用wget 命令直接下载文件,如果wget 的uri为空,返回http服务器启动所在目录中文件
eg: wget 127.0.0.1:8000/sample.txt  #下载sample.txt文件
eg : wget 127.0.0.1:8000        #列出目录内容

  二、利用Python开发http简单的文件服务器(支持上传、下载)

#!/usr/bin/python

import re
import sys
import urllib
import httplib2
import os
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer class Webhandler(BaseHTTPRequestHandler):
#客户端Get请求的处理函数
def do_GET(self):
path, args = urllib.splitquery(self.path) self.send_response(200)
self.send_header('Content-type', 'application/octet-stream')
self.end_headers() #将当前目录与uri拼接获取文件(夹)的绝对路径
target_file = os.getcwd() + path
if os.path.exists(target_file) == False:
self.wfile.write(target_file + 'isn\' exists')
elif os.path.isdir(target_file):
#如果是个文件夹,就直接递归列出文件夹的详细内容
file_list = os.popen("ls -lR").read()
self.wfile.write(file_list)
elif os.path.isfile(target_file):
#如果是个文件,就打开文件然后将文件内容发送给客户端
f = open(target_file, 'rb')
self.wfile.write(f.read())
f.close() #客户端POST请求的处理函数
def do_POST(self):
path, args = urllib.splitquery(self.path)
filename = os.path.basename(path) self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers() #读取post请求的body,如果不为空就按照uri最后的名称作为文件名
#将body写入到文件并保存到当前文件夹
datas = self.rfile.read(int(self.headers['content-length']))
if datas != None:
f = open(filename, 'wb')
f.write(datas)
f.close() if __name__ == '__main__':
try:
port = int(sys.argv[1])
print 'port is %d' % port
server = HTTPServer(('', port), Webhandler)
print 'Welcome to my website !'
server.serve_forever() except KeyboardInterrupt:
print '^C received, shutting down server'
server.socket.close()

注:1. 上述这段Python代码只是简单实现了文件上传、下载功能,需要的话可以添加自己的处理逻辑。

将上述代码保存到一个文本文件file_server.py中,然后把该文件拷贝到保存文件的目录下,执行  python ./file_server.py  8000,启动监听8000端口的http服务器

如果执行的时候提示缺少相应的模块可以通过pip的方式安装:

  1. sudo yum install python-setuptools -y; easy_install pip 安装python包管理器pip
  2. 创建文件 ~/.pip/pip.conf,然后添加如下内容(将pip镜像源改成国内的,加快速度)
    [global]
    index-url = https://pypi.tuna.tsinghua.edu.cn/simple

 

  三. 使用方法

客户端可以通过如下命令进行下载上传操作:

#下载文件
wget 127.0.0.1:8000/note.txt #下载http服务器上的note.txt文件 #上传文件:
curl --data-binary @note.txt 127.0.0.1:8000/note1.txt #将本地的note.txt文件上传到http服务器上并重命名为note1.txt

linux、windows系统间传输文件的更多相关文章

  1. 使用WinSCP在Windows和Linux系统之间传输文件

    小梅哥编写,未经许可,严禁用于任何商业用途 2018年6月30日 在日常SoC开发中,我们经常需要在Windows和Linux系统之间传输文件,例如在Windows系统上的DS-5集成开发环境中编写好 ...

  2. 两台Linux系统之间传输文件的几种方法

    两台Linux系统之间传输文件的几种方法:参考https://www.cnblogs.com/bignode/articles/9241333.html

  3. Linux间传输文件 scp

    scp scp使用ssh来传输数据,使用相同的认证方式,所以配置好ssh后,根据用户名和密码来读写远程文件.基本命令如下,输完命令,回车,输入远程用户对应的密码: 从本机复制到远程: 文件:scp F ...

  4. mac与windows通过ftp传输文件

    1.两个系统相互传文件,比较通用的方式是用QQ,两台电脑一台各登陆一个qq,发文件就行了,在同一个网段时,qq会自动转换为按局域网的方式传输. 2.本人不愿安装qq,以ftp方式进行传输,先在wndo ...

  5. linux/windows系统oracle数据库简单冷备同步

    linux/windows系统oracle数据库简单冷备同步 我们有一个财务系统比较看重财务数据的安全性,同时我们拥有两套系统,一个生产环境(linux),一个应急备份环境(windows).备份环境 ...

  6. linux/Windows系统如何安装PHP-openssl扩展

    今天倒腾了半天公司的OA办公系统,原来现在很多的smtp服务器是需要ssl方式加密的,而支持ssl需要php加载openssl扩展.所以本文我们将和大家一起分享如何在linux/Windows系统下安 ...

  7. Windows系统字体与文件对照表

    源:Windows系统字体与文件对照表 宋体 (TrueType) = SIMSUN.TTF 黑体 (TrueType) = simhei.ttf 楷体_GB2312 (TrueType) = sim ...

  8. 【原创】Linux基础之linux服务器服务器间拷贝文件

    linux服务器服务器间拷贝文件,有几种方式: 1 如果是定时任务,可以用rsync 2 如果是基于ssh登录,可以用scp,优点是可以实现远程到远程的拷贝,缺点是需要账号密码 upload: scp ...

  9. Unity调用windows系统dialog 选择文件夹

    #region 调用windows系统dialog 选择文件夹 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] public ...

随机推荐

  1. xtrabackup全量备份和增(差)量备份

    xtrabackup全量备份和增(差)量备份 1.xtrabackup全量备份和恢复 1)备份: innobackupex --default-file=/PATH/TO/DEFAULT --host ...

  2. poweshell批量删除某类型文件

    错误方法 rm *.o" -recurse 按照提示,rm(remove-item)是可以递归删除子文件夹的.但是这个方法确实无效.在他们的示例里面找到说明: --------------- ...

  3. Python3基础知识之元组、集合、字典

    1.元组 元组特点元组是不可变的两个元组可以做加法,不能做减法 元组的方法 >>> S('a', 'b', 'c', 'd', 'e')>>> S=('a','b' ...

  4. 什么是bgp线路

    https://www.douban.com/note/319956581/ BGP(边界网关协议)主要用于互联网AS(自治系统)之间的互联,BGP的最主要功能在于控制路由的传播和选择最好的路由.中国 ...

  5. myeclipse取消js校验

    最近玩一个新的项目,项目里面集成了别的项目,在从SVN上第一次荡下来的时候编译的时候老是校验jq文件,老是被卡主,设置myeclipse环境的时候我已经取消了所有的js校验了,但是还是不行.恼火之余, ...

  6. 输入和输出--javase中的路径

    就目前为止, javase中经常用到路径来读取一个资源文件的所有情况都已经整理在博客里面了,这里做一个统一的整理: 1,IO流来读取一个文件,比如说new FileInputStream(" ...

  7. javabean内省

    何为JavaBean? JavaBean 是一种JAVA语言写成的可重用组件.为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器.JavaBean 通过提供符合一致性设计模式的公共 ...

  8. Cannot create an instance of OLE DB provider “OraOLEDB.Oracle” for linked server "xxxxxxx".

    在SQL SERVER 2008 R2下用Windows 身份认证的登录名创建了一个访问ORACLE数据库的链接服务器xxxxx,测试成功,木有问题,但是其它登录名使用该链接服务器时,报如下错误: 消 ...

  9. 【转】shell学习笔记(三)——引用变量、内部变量、条件测试、字符串比较、整数比较等

    1.env显示当前的环境变量 2.PS1='[\u@\h \w \A] \$' 可以设置bash的命令与提示符. 3.echo $$ 显示当前bash的PID号 4.echo $?显示上一条指令的回传 ...

  10. 02-Go语言数据类型与变量

    Go基本类型 布尔型: bool - 长度: 1字节 - 取值范围: true,false - 注意事项: 不可以用数字代表true或false 整型: int/uint - 根据运行平台可能为32或 ...