精华内容
下载资源
问答
  •  1.1 “实测的”“有效”吞吐速度高,超过M字节每秒(MBytes/s),所以可用来传输音视频或大量数据  1.2 准实时性收发,连续发包之间的间隔可在ms级或us级,可适应一些对传输性实时性有要求的场合。 2. 稳定可靠不...

    在传统观念里, 单片机WIFI通信,尤其是单片机高速WIFI通信传输,是一个不现实的梦想,原因一般在于:
    (1) 能做高速通信的WIFI模块,一般只是USB、SDIO、或PCIE之类的接口,而大多数普通单片机都不会提供这些主机接口;
    (2)即使某些款的单片机也能提供这些接口,也会单片机和WIFI模块的通信编程变得非常复杂,同时也会造成单片机选型的成本增加;
    (3)普通单片机因为资源(性能和存储)有限,也难以支持实用的较好性能的单片机WIFI方案。

    所以,大多数用在单片机系统上的WIFI模块,要么是以串口为主的,只能做一些基本的低速控制命令的传输,或者费了九牛二虎之力,集成了USB、 SDIO、或PCIE接口的WIFI模块,其做出来的效果也很一般,速度一般也不超过300K字节每秒。因此,在普通单片机做高速WIFI通信,基本上成为了一个不可实现的梦想,并甚至成为一种传统惯性认识。

    ALK8266WIFI, 基于SPI接口的高速WIFI模块,在多款普通单片机上,包括STM32系列及其兼容系列(如国产GD系列)、NXP系列(LPC和iMX跨接处理器)、TI DSP(如TMS320F28335)、Nuvoton新塘系列、C8051系列 ,以及一些国产单片机等多款常见的主流单片机主机,测试验证,实现了高速传输,普通环境下,实测有效速度可以超过兆字节每秒,长时间运行不掉线、不丢包,在单片机音视频传输、高速采集数据传输场合都得到了超过了一年以上的产品化的验证。而且集成简单(就象访问普通的SPI外设一样简单),占用单片机资源少(无需在单片机上集成操作系统或协议栈)。该方案功能强大、性能高、稳定,集成移植简单、适应面广,精致小巧。性价比超高。

    在某宝搜索 “SPI 高速 多链接”  里面有更进一步的详细介绍,很技术化。

     

     

     

    ALK8266高速WIFI模组 SPI接口 带WEB网页 音视频传输产品化验证

    在某宝搜索 “SPI 高速 多链接”  里面有更进一步的详细介绍,很技术化

    1. 有效通信速度快,效率高,通信实时性好
       1.1 “实测的”“有效”吞吐速度高,超过M字节每秒(MBytes/s),所以可用来传输音视频或大量数据
       1.2 准实时性收发,连续发包之间的间隔可在ms级或us级,可适应一些对传输性实时性有要求的场合。
    2. 稳定可靠不丢包,长时间通信不掉线
       2.1 测试条件:普通办公室环境实测
       2.2 测试速度:速度稳定在兆字节每秒(MBytes/s)以上
       2.3 长时间运行测试:持续运行30天,不掉线、传输不停止/不卡死
       2.4 丢包测试:TCP通信持续测试过5小时以上,不丢包、不多包,不丢字节、不多多字节,收发方数据完全一样。
           测试场景包括:(1)TCPUDP抓包软件单纯发送, 模块单纯接收
                                   (2)TCPUDP抓包软件单纯接收, 模块单纯发送
                                   (3)TCPUDP抓包软件同时发收, 模块同时收发
                                   (4)两个WIFI模块之间互相对发对收
    3. 功能全面,使用灵活,使用场合适应面广
       3.1 灵活实用的无线通信
           3.1.1 模块支持 工作站STA, 热点AP 以及 STA+AP 混合模式,无论是否存在第三方热点,都可实现通信
           3.1.2 支持UDP,TCP客户端,TCP服务器,灵活方便
           3.1.3 UDP通信支持广播、组播以及单播,灵活高效
           3.1.4 支持多链接,每个链接独立随意配置,实用的多通道高速通信
           3.1.5 支持多客户端,模组作为TCP服务器可以同时和多个客户端通信
           3.1.6 支持大块数据阵发发送,适合一些文件等大块数据传输需求的场合
       3.2 内嵌WEB服务器,操作更灵活和便捷
           3.2.1 无需安装APP,直接通过常见的浏览器操作
           3.2.2 普通智能手机或电脑均可直接操作
           3.2.3 支持“自动弹出网页”功能
           3.2.4 可通过网页直接配网、配置热点、建立和查询链接通道信息等操作
       3.3 配网方式灵活多样方便
           3.3.1 WEB网页配网:勿需安装APP,直接输入,简单方便,受限条件少
           3.3.2 智能配网:SmartConfig/SmartLink, 微信Airkiss扫一扫;
                 -特色 提供配网进展灯闪烁样式,提高智能配网操作方便性。
           3.3.3 直接配网:串口AT指令、SPI接口API函数 直接输入
       3.4 内嵌RSA加密和签名算法
           3.4.1 可作为加密芯片使用,支持单片机固件的防复制
       3.5 支持有意义的低功耗
           3.5.1 确保有用发射功耗足够强传输距离足够远的前提下的低功耗机制
           3.5.2 支持休眠,自动唤醒或手动唤醒
           3.5.3 深度休眠电流低于1mA
     4. 封装灵活、尺寸小巧
     
     4.1 整孔和半孔(邮票孔)一体化设计
       4.2 兼容插件方式或贴片装配方式
       4.3 大小和一枚1角硬币相当
    5. 常见通用的SPI单片机主机接口,集成简单,占用单片机资源少
     
     5.1 主机接口为标准的SPI从,适配绝大多数的常见单片机,单片机选型范围广
           - 硬件接线简单,只需要标准的SPI总线管脚,无需额外的UART串口
           - 按照普通的SPI从机方式对模块进行读写,实现单片机与模块的配置查询以及传输通信
       5.2 模块上已集成了TCPIP协议栈,
           - 单片机无需再集成相关协议栈或操作系统,
           - 因此集成简单,占用单片机资源少,且通信效率也更高
    6. 提供单片机例程包、集成说明等资料文档,和技术支持
       6.1 单片机例程包都经过实际测试和验证
       6.2 集成说明文档和开发使用技巧,都是基于开发经验和客户反馈总结编写,非简单的协议复制
       6.3 可提供目前市场上主流的单片机例程包,包括但不限于:
           - STM32系列(如F1/F2/F3/F4/F7 H7 L1/L4)
           - NXP LPC17xx系列
           - NXP K60, K27/28系列、
           - NXP i.MX RT10xx系列、
           - C8051系列、
           - Nuvoton新塘 NUC123xx系列、M45x系列、
           - TI MSP430系列
           - TI C2000/C5000(如TMS320F28335)
           - 等
    在某宝搜索 “SPI 高速 多链接”  排名靠前的就是,里面有更进一步的详细介绍,很技术化。

    展开全文
  • 这里来分析那个拷贝文件更快点:import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import...

    文件字节流复制文件的原理是:读取一个个字节(或者字节数组),然后再写入文件中去。

    缓冲字节流复制文件的原理是:读取一个个字节(或者字节数组)放到缓冲字节数组中,等到缓冲字节数组读满后,再把这几次读取到的字节一并写到文件中去。这样使用缓冲字节流,就能少写几次文件,进而节省时间

    测试代码:

    (1)批量读取比较:

    public class TestBuffered_File
    {
    	public static void copyFileBufferd(File srcFile,File destFile,int bufsize) throws IOException
    	{
    		if(!srcFile.exists())
    		{
    			throw new FileNotFoundException("文件"+srcFile+"不存在");
    		}
    		if(!srcFile.isFile())
    		{
    			throw new IllegalArgumentException(srcFile+"不是文件");
    		}
    		//创建缓冲字节流对象,内部缓冲设置为bufSize
    		BufferedInputStream in=new BufferedInputStream(
    				new FileInputStream(srcFile),bufsize);
    		BufferedOutputStream out=new BufferedOutputStream(
    				new FileOutputStream(destFile),bufsize);
    		int size=0;
    		byte[] buffer=new byte[512];
    		//读到字节串到内部缓存,默认缓冲区的大小是8192字节
    		while((size=in.read(buffer))!=-1)
    		{
    			out.write(buffer,0,size);//把读取到的字节串写入到缓冲区,缓冲区写满会自动写入文件
    //			out.flush();//刷新缓冲区写入文件
    		}
    		out.flush();//刷新缓冲区写入文件
    		in.close();
    		out.close();
    	}
    	/**
    	 * 使用FileInputStream和FileOutputStream 按字节数组拷贝文件
    	 * @param srcFile 源文件File对象
    	 * @param targetFile 目标文件File对象
    	 * @throws IOException
    	 */
    	public static void copyFileByBytes(File srcFile,File targetFile) throws IOException
    	{
    		if(!srcFile.exists())
    		{
    			throw new IllegalArgumentException( srcFile+"文件不存在");
    		}
    		if(!srcFile.isFile())
    		{
    			throw new IllegalArgumentException( srcFile+"不是文件");
    		}
    		FileInputStream in=new FileInputStream(srcFile);
    		FileOutputStream out=new FileOutputStream(targetFile);
    		byte[] buf=new byte[512];
    		int size=0;
    		while((size=in.read(buf, 0, buf.length))!=-1)
    		{
    			out.write(buf, 0, size);
    			out.flush();//刷新写入文件中去。
    		}
    		in.close();
    		out.close();
    		
    	}
    	/**
    	 * 把时间戳(long 毫秒数)转换为格式化时间字符串
    	 * @param timeStamp long毫秒数
    	 * @return 格式化时间字符串
    	 */
    	public static String timeStampToDateString(long timeStamp)
    	{
    		Date date = new Date(timeStamp);
    		/*
    			m  小时中的分钟数 
    			s  分钟中的秒数  
    			S  毫秒数  
    		 */
    		DateFormat format = new SimpleDateFormat("mm:ss:SS");
    		String dateString=format.format(date);
    		return dateString;
    	}
    	public static void main(String[] args)
    	{
    		String packagePath;
    		try
    		{
    			//使用缓冲字节流拷贝文件
    			long start=System.currentTimeMillis();//获取当前的时间戳
    			packagePath = FilePath.getSrcPackagePath(TestBufferedCopy.class);
    			copyFileBufferd(new File(packagePath+"李玉刚_刚好遇见你.mp3"),
    					new File(packagePath+"李玉刚_刚好遇见你副本4.mp3"),1024*10);
    			long end=System.currentTimeMillis();//获取复制后的时间戳
    			
    			System.out.println("使用缓冲字节流(每次读取字节数组512)拷贝文件用时(分钟:秒:毫秒):"
    						+timeStampToDateString(end-start));
    			//使用文件字节流,按字节数组拷贝文件
    			start=System.currentTimeMillis();
    			copyFileByBytes(new File(packagePath+"李玉刚_刚好遇见你.mp3"),
    					new File(packagePath+"李玉刚_刚好遇见你副本5.mp3"));
    			end=System.currentTimeMillis();
    			System.out.println("使用文件字节流(每次读取字节数组512)拷贝文件用时(分钟:秒:毫秒):"
    						+timeStampToDateString(end-start));
    		
    		} catch (UnsupportedEncodingException e1)
    		{
    			e1.printStackTrace();
    		} catch (IOException e)
    		{
    			e.printStackTrace();
    		}
    	}
    }
    

    运行结果:

    使用缓冲字节流(每次读取字节数组512)拷贝文件用时(分钟:秒:毫秒):00:00:34
    使用文件字节流(每次读取字节数组512)拷贝文件用时(分钟:秒:毫秒):00:00:101

    可见,每次读取相同的字节数组的条件下,缓冲字节流多了缓冲,进而减少写入文件的次数,从而比文件字节流用时少。

    (2)逐个字节读取比较:

    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import com.lan.filepath.FilePath;
    
    public class TestBuffered_FileByByte
    {
    	public static void copyFileBufferdByByte(File srcFile, File destFile, int bufsize)
    			throws IOException
    	{
    		if (!srcFile.exists())
    		{
    			throw new FileNotFoundException("文件" + srcFile + "不存在");
    		}
    		if (!srcFile.isFile())
    		{
    			throw new IllegalArgumentException(srcFile + "不是文件");
    		}
    		// 创建缓冲字节流对象,内部缓冲设置为bufSize
    		BufferedInputStream in = new BufferedInputStream(
    				new FileInputStream(srcFile), bufsize);
    		BufferedOutputStream out = new BufferedOutputStream(
    				new FileOutputStream(destFile), bufsize);
    		int size = 0;
    		// 读到字节串到内部缓存,默认缓冲区的大小是8192字节
    		while ((size = in.read()) != -1)
    		{
    			out.write(size);// 把读取到的字节写入到缓冲区,缓冲区写满会自动写入文件
    		}
    		out.flush();// 刷新缓冲区写入文件
    		in.close();
    		out.close();
    	}
    	/**
    	 * 使用FileInputStream和FileOutputStream 按字节数组拷贝文件
    	 * 
    	 * @param srcFile
    	 *            源文件File对象
    	 * @param targetFile
    	 *            目标文件File对象
    	 * @throws IOException
    	 */
    	public static void copyFileByByte(File srcFile, File targetFile)
    			throws IOException
    	{
    		if (!srcFile.exists())
    		{
    			throw new IllegalArgumentException(srcFile + "文件不存在");
    		}
    		if (!srcFile.isFile())
    		{
    			throw new IllegalArgumentException(srcFile + "不是文件");
    		}
    		FileInputStream in = new FileInputStream(srcFile);
    		FileOutputStream out = new FileOutputStream(targetFile);
    		int size = 0;
    		while ((size = in.read()) != -1)
    		{
    			out.write(size);
    		}
    		in.close();
    		out.close();
    
    	}
    	/**
    	 * 把时间戳(long 毫秒数)转换为格式化时间字符串
    	 * 
    	 * @param timeStamp
    	 *            long毫秒数
    	 * @return 格式化时间字符串
    	 */
    	public static String timeStampToDateString(long timeStamp)
    	{
    		Date date = new Date(timeStamp);
    		/*
    		 * m 小时中的分钟数 s 分钟中的秒数 S 毫秒数
    		 */
    		DateFormat format = new SimpleDateFormat("mm:ss:SS");
    		String dateString = format.format(date);
    		return dateString;
    	}
    	public static void main(String[] args)
    	{
    		String packagePath;
    		try
    		{
    			// 使用缓冲字节流拷贝文件
    			long start = System.currentTimeMillis();// 获取当前的时间戳
    			packagePath = FilePath.getSrcPackagePath(TestBufferedCopy.class);
    			copyFileBufferdByByte(new File(packagePath + "李玉刚_刚好遇见你.mp3"),
    					new File(packagePath + "李玉刚_刚好遇见你副本6.mp3"), 1024 * 10);
    			long end = System.currentTimeMillis();// 获取复制后的时间戳
    
    			System.out.println("使用缓冲字节流(逐个字节)拷贝文件用时(分钟:秒:毫秒):"
    					+ timeStampToDateString(end - start));
    			// 使用文件字节流,按字节数组拷贝文件
    			start = System.currentTimeMillis();
    			copyFileByByte(new File(packagePath + "李玉刚_刚好遇见你.mp3"),
    					new File(packagePath + "李玉刚_刚好遇见你副本7.mp3"));
    			end = System.currentTimeMillis();
    			System.out.println("使用文件字节流(逐个字节)拷贝文件用时(分钟:秒:毫秒):"
    					+ timeStampToDateString(end - start));
    
    		} catch (UnsupportedEncodingException e1)
    		{
    			e1.printStackTrace();
    		} catch (IOException e)
    		{
    			e.printStackTrace();
    		}
    	}
    }
    

    运行结果:

    使用缓冲字节流(逐个字节)拷贝文件用时(分钟:秒:毫秒):00:00:279
    使用文件字节流(逐个字节)拷贝文件用时(分钟:秒:毫秒):00:35:982
    

    可以看到逐个字节逐个字节的来拷贝文件,使用文件字节流要读一个字节写一个字节,耗时很大。虽然也是每次读取一个字节一个字节的读取,但是使用缓冲字节流读取满缓冲,才写一次文件,也就是读取1024 * 10次,才写一次文件。相比于使用文件字节流节省了1024 * 10-1次写文件的操作。这样就节省更多的时间。

    总结:

    (1) 如果使用文件字节流,复制文件,每次读取一个数组,写一个数组,比每次读取一个字节,写一个字节更快。

    (2) 使用缓冲字节流比文件字节流更快(多分配内存(缓冲)):每次读取一个数组放到一个大的数组中去(缓冲),然后大的数组(缓冲)满了再一次性写入。



    展开全文
  • 背景作为一家大规模的自营式电商企业,京东需要存储海量的非结构化数据:商品图片、订单文本、仓库流转记录、App客户端文件、日志文件、内部文档等。对于存储这些数据,之前并没有统一的解决方案,都是各个业务线...

    背景

    作为一家大规模的自营式电商企业,京东需要存储海量的非结构化数据:商品图片、订单文本、仓库流转记录、App客户端文件、日志文件、内部文档等。对于存储这些数据,之前并没有统一的解决方案,都是各个业务线自行解决——MySQL BLOB、HDFS、FastDFS。

    2013年5月,京东开始组建存储组,自主研发JFS——京东文件系统,以实现非结构化数据存储统一服务为目标。

    小文件存储

    针对3个典型的应用场景——商品图片、OFC订单、WMS库房流水,JFS第一版定位为海量小文件存储,其核心功能定义如下。

    • 海量小文件存储,极高的可靠性、可用性与一致性。
    • Key-File数据模型,Key由系统生成,全局唯一;文件immutable,即不可修改,甚至极少被删除。

    其主要包含如下3个模块。

    • ZooKeeper作为集群协调器管理元数据信息。
    • 由Go语言开发的DataNode,实现服务端读写逻辑、复制协议、故障恢复等。每个DataNode管理一块磁盘——该设计大幅简化了工程实现。
    • 由Java开发的客户端。

    复制协议实现了一种Paxos变体,或者说一种极简的Paxos实现,如图1所示:固定成员(一个复制组由1primary + 2follower构成)、固定角色(primary与follower角色不会发生变更)、固定读写流程(client将写操作发送到primary,它在写本地的同时将写操作发给两个follower,三副本都写入成功后才成功返回给用户;优先在follower上读取,提高系统的并发能力)。

    存储引擎采用Append-Only方式,每个DataNode维护一组(默认配置为512)Chunk大文件,客户端上传的小文件(如一张图片)被并行追加至一个复制组三名成员对应的Chunk中,如图2所示。

    这里写图片描述

    图1 JFS小文件复制协议

    这里写图片描述

    图2 JFS小文件数据存储

    JFS为每个成功上传的小文件生成全局唯一的JFS Key来编码其存储位置信息:

    JFS Key = Replica Group ID/Chunk ID/Offset/Length/Checksum/Signature

    比如,jfs/t3442/251/2127752103/150148/57583d02/5844d73fNaca4af3d.jpg是京东网站上一款电饭煲的主图的JFS Key,表示该图片存储在3442号复制组、251号Chunk的2127752103字节偏移处,长度为150148字节,CRC校验码为57583d02,签名5844d73fNaca4af3d用于防止URL篡改攻击。

    图片系统

    基于JFS小文件存储系统,我们在2014年春天重新建设了京东商品图片系统(系统架构如图3所示),并在公司上市之前成功上线。之后,图片系统零故障稳定运行至今,历经商品图片规模从十亿到百亿的大幅增长。
    同一张商品图片可能有数十种不同的规格(不同的设备、展现格式、降质参数),但源站JFS只存一副原图,CDN会缓存各种规格的图片URL,CDN未命中的图片则进行回源实时处理并返回。这样不仅节约了源站JFS的存储空间,也可以灵活地满足业务不断变化的需求。

    这里写图片描述

    图3 京东新图片系统架构

    在解决最核心的图片存储和处理问题后,我们也做了很多工作来推动图片技术的发展。在缩放效率上,引入ICC、IPP编译将图片缩放性能提升到最初的3倍以上。在流量优化方面,将Webp格式引入京东,与无线部门紧密合作,将移动端的图片全部替换成Webp格式,给用户节省约35%的下行流量,并显著提升了用户体验。

    大文件存储

    JFS V2实现大文件存储功能。对于大文件写操作来说,类Paxos复制协议并不合适。primary拿到数据后同时发送给两个follower,这样primary的带宽资源将成为系统的瓶颈。因此,在大文件存储复制协议的选择上,JFS采取了链式复制(Chained Replication)以提高写操作吞吐量。链式复制结构如图4所示。在数据发送和接收上,也均使用了流水线处理,进一步提高了数据传输效率。

    这里写图片描述

    图4 JFS大文件复制协议

    在数据存储结构设计上,恰恰与小文件相反,将一个大文件分成多个块来存储,这样可以规避局部过热的文件造成单机磁盘I/O过载;另外,分成多块也更利于整个系统资源的调度。大文件的数据存储如图5所示。

    这里写图片描述

    图5 JFS大文件数据存储

    对象存储服务

    JFS的小文件存储和大文件存储功能,从可靠性、可用性和稳定性方面,已经满足了大部分的业务需求,但使用起来却不是很方便,上传和下载都需要通过SDK,用户排查问题不是那么便捷,且对多语言的支持也不好。我们构建了JFS V3产品形态:简单对象存储,支持HTTP协议;支持文本、图片、视频等任何类型数据的存储;支持1个字节到1TB大小的数据存储;支持List操作,用户数据可以有层次结构。JFS V3为众多业务场景提供了最便捷的数据访问方式。

    对象存储系统架构如图6所示。除了前面已经提到的大小文件存储,还需要构建Gateway、账户和Bucket管理、日志处理等,当然还有最复杂的元数据管理。

    对象存储的元数据管理是一个业内难题。虽然对象存储并无目录的概念,但要支持按前缀进行List的操作,即能通过Prefix和Delimiter的结合,实现层次查询,是有一定难度的。在数据量不大时,类似于Hdfs的NameNode将全部用户Key都存在内存中就能满足需求,但当对象的数量超过十亿时,将会耗尽内存,无法做到横向扩展。很多KV存储能做到随意横向扩展,却不能很好地支持对象存储List请求。

    这里写图片描述

    图6 对象存储架构

    JFS V3采用JED(京东弹性数据库)和JIMDB(京东内存存储系统)组合,来实现对象存储元数据的有效管理。将元数据扁平化持久存储在弹性数据库JED中,热点缓存在JIMDB中,一方面利用JED的单库MySQL的B树结构实现元数据的List层次查询;另一方面使用JIMDB实现高速单Key查询。当数据量达到一定阈值时,JED可以进行在线的扩容与重新分片,JIMDB也可以做动态容量扩展,这使得JFS V3服务逻辑层在工程实现上非常简单。

    电子签收

    JFS V3作为对象存储服务,一经推出就受到业务部门的广泛欢迎,电子签收小票的存储管理就是一个特别典型的应用。

    从环保和成本的角度出发,运营系统青龙研发部创新性地启动了电子签收项目,取代之前每天数百万张的纸质小票。电子签收产生的海量签名图片需要高安全性、高稳定性、高持久性地保存。这无疑是对象存储的一个很好的应用场景,在此之上我们还实现了加解密、文字转图片、图片合成等定制化需求。基于JFS对象存储的电子签收后台系统,根据传回来的签收信息,按照指定样式生成签收小票图片并与用户签名图片合成,再按照业务安全性要求做数据加解密处理。如图7所示。

    这里写图片描述

    图7 电子签收

    经过过去4年的发展,JFS对象存储目前支持京东1200多个业务的数据存储,双11最高峰值为每秒约10万个对象同时读写,存储对象数目达数百亿级别,数据总量达数十PB。

    本文节选自:《京东基础架构建设之路(全彩)》一书;
    这里写图片描述
    编辑推荐:
    1. 从无到有的架构建设之路,逐步解决业务痛点;
    2. 一线架构师的前线战报,为618、11.11保驾护航;
    3. 全面解析京东基础架构技术,承载亿级规模存储和流量的基础架构实践;
    4. 集诸多热点技术之大成:容器/数据库/存储/中间件/全链路军演/异地多- 活/电商中的机器学习应用。

    展开全文
  • windows下复制文件命令

    万次阅读 2012-06-14 10:04:40
    1、xcopy命令 复制文件和目录树。 XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]  [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]

    1、xcopy命令

    复制文件和目录树。

    XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]
                               [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
                               [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B]
                               [/EXCLUDE:file1[+file2][+file3]...]

      source       指定要复制的文件。
      destination  指定新文件的位置和/或名称。
      /A           仅复制有存档属性集的文件,但不更改属性。
      /M           仅复制有存档属性集的文件,并关闭存档属性。
      /D:m-d-y     复制在指定日期或指定日期以后更改的文件。
                   如果没有提供日期,只复制那些源时间比目标时间新的文件。
      /EXCLUDE:file1[+file2][+file3]...
                   指定含有字符串的文件列表。每个字符串在文件中应位于单独的一行。
                   如果任何字符串与复制文件的绝对路径的任何部分相符,则排除复制
                   该文件。例如,指定如 \obj\ 或 .obj 的字符串会分别排除目录
                   obj 下面的所有文件或带有 .obj 扩展名的所有文件。
      /P           创建每个目标文件之前提示您。
      /S           复制目录和子目录,不包括空目录。
      /E           复制目录和子目录,包括空目录。与 /S /E 相同。可以用来修改 /T。
      /V           验证每个新文件的大小。
      /W           提示您在复制前按键。
      /C           即使有错误,也继续复制。
      /I           如果目标不存在,且要复制多个文件,则假定目标必须是目录。
      /Q           复制时不显示文件名。
      /F           复制时显示完整的源文件名和目标文件名。
      /L           显示要复制的文件。
      /G           允许将加密文件复制到不支持加密的目标。
      /H           也复制隐藏文件和系统文件。
      /R           覆盖只读文件。
      /T           创建目录结构,但不复制文件。不包括空目录或子目录。/T /E 包括
                   空目录和子目录。
      /U           只复制已经存在于目标中的文件。
      /K           复制属性。一般的 Xcopy 会重设只读属性。
      /N           用生成的短名称复制。
      /O           复制文件所有权和 ACL 信息。
      /X           复制文件审核设置(隐含 /O)。
      /Y           取消提示以确认要覆盖现有目标文件。
      /-Y          要提示以确认要覆盖现有目标文件。
      /Z           在可重新启动模式下复制网络文件。
      /B           复制符号链接本身与链接目标相对。
      /J           复制时不使用缓冲的 I/O。推荐复制大文件时使用。

    开关 /Y 可以预先在 COPYCMD 环境变量中设置。
    这可能被命令行上的 /-Y 覆盖。

     

    4.使用说明:

     (1)XCOPY是COPY的扩展,可以把指定的目录连文件和目录结构一并拷贝,但不能拷贝隐藏文件和系统文件;

    (2)使用时源盘符、源目标路径名、源文件名至少指定一个;

    (3)选用/S时对源目录下及其子目录下的所有文件进行COPY。除非指定/E参数,否则/S不会拷贝空目录,若不指定/S参数,则XCOPY只拷贝源目录本身的文件,而不涉及其下的子目录;

    (4)选用/V参数时,对的拷贝的扇区都进行较验,但速度会降低。

    示例:xcopy  E:\music\*.ape  E:\txt

    2.copy命令

    将一份或多份文件复制到另一个位置。

    COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/L] [/A | /B ] source [/A | /B]
         [+ source [/A | /B] [+ ...]] [destination [/A | /B]]

      source       指定要复制的文件。
      /A           表示一个 ASCII 文本文件。
      /B           表示一个二进位文件。
      /D           允许解密要创建的目标文件
      destination  为新文件指定目录和/或文件名。
      /V           验证新文件写入是否正确。
      /N           复制带有非 8dot3 名称的文件时,
                   尽可能使用短文件名。
      /Y           不使用确认是否要覆盖现有目标文件
                   的提示。
      /-Y          使用确认是否要覆盖现有目标文件
                   的提示。
      /Z           用可重新启动模式复制已联网的文件。
    /L           如果源是符号链接,请将链接复制
                   到目标而不是源链接指向的实际文件。

    命令行开关 /Y 可以在 COPYCMD 环境变量中预先设定。
    这可能会被命令行上的 /-Y 替代。除非 COPY
    命令是在一个批处理脚本中执行的,默认值应为
    在覆盖时进行提示。

    要附加文件,请为目标指定一个文件,为源指定
    数个文件(用通配符或 file1+file2+file3 格式)。

    4.使用说明:

    (1)COPY是文件对文件的方式复制数据,复制前目标盘必须已经格式化;

    (2)复制过程中,目标盘上相同文件名称的旧文件会被源文件取代;

    (3)复制文件时,必须先确定目标般有足够的空间,否则会出现;insufficient的错误信息,提示磁盘空间不够;

     (4)文件名中允许使用通配举“*”“?”,可同时复制多个文件;

     (5)COPY命令中源文件名必须指出,不可以省略。

    (6)复制时,目标文件名可以与源文件名相同,称作“同名拷贝”此时目标文件名可以省略;

    (7)复制时,目标文件名也可以与源文件名不相同,称作“异名拷贝”,此时,目标文件名不能省略;

    (8)复制时,还可以将几个文件合并为一个文件,称为“合并拷贝”,格式如下:COPY;[源盘][路径]〈源文件名1〉〈源文件名2〉…[目标盘][路径]〈目标文件名〉;

    (9)利用COPY命令,还可以从键盘上输入数据建立文件,格式如下:COPY CON [盘符:][路径]〈文件名〉;

    (10)注意:COPY命令的使用格式,源文件名与目标文件名之间必须有空格!

    示例:copy  E:\music\*陈奕迅*.*  E:\test

    3.robocopy

     ROBOCOPY     ::     Windows 的可靠文件复制                             
    -------------------------------------------------------------------------------

      开始时间: Thu Jun 14 09:56:11 2012

                   用法 :: ROBOCOPY source destination [file [file]...] [options]

                     源 :: 源目录(驱动器:\路径或\\服务器\共享\路径)。
                   目标 :: 目标目录(驱动器:\路径或\\服务器\共享\路径)。
                   文件 :: 要复制的文件(名称/通配符: 默认为 "*.*")。

    ::
    :: 复制选项:
    ::
                     /S :: 复制子目录,但不复制空的子目录。
                     /E :: 复制子目录,包括空的子目录。
                 /LEV:n :: 仅复制源目录树的前 n 层。

                     /Z :: 在可重新启动模式下复制文件。
                     /B :: 在备份模式下复制文件。
                    /ZB :: 使用可重新启动模式;如果拒绝访问,请使用备份模式。
                /EFSRAW :: 在 EFS RAW 模式下复制所有加密的文件。

          /COPY:复制标记:: 要复制的文件内容(默认为 /COPY:DAT)。
                           (复制标记: D=数据,A=属性,T=时间戳)。
                           (S=安全=NTFS ACL,O=所有者信息,U=审核信息)。

               /DCOPY:T :: 复制目录时间戳。

                   /SEC :: 复制具有安全性的文件(等同于 /COPY:DATS)。
               /COPYALL :: 复制所有文件信息(等同于 /COPY:DATSOU)。
                /NOCOPY :: 不复制任何文件信息(与 /PURGE 一起使用生效)。

                /SECFIX :: 修复所有文件的文件安全性,即使是跳过的文件。
                /TIMFIX :: 修复所有文件的文件时间,即使是跳过的文件。

                 /PURGE :: 删除源中不再存在的目标文件/目录。
                   /MIR :: 镜像目录树(等同于 /E 和 /PURGE)。

                   /MOV :: 移动文件(复制后从源中删除)。
                  /MOVE :: 移动文件和目录(复制后从源中删除)。

         /A+:[RASHCNET] :: 将给定的属性添加到复制文件。
         /A-:[RASHCNET] :: 从复制文件中删除给定的属性。

                /CREATE :: 仅创建目录树和长度为零的文件。
                   /FAT :: 仅使用 8.3 FAT 文件名创建目标文件。
                   /256 :: 关闭超长路径(> 256 字符)支持。

                 /MON:n :: 监视源;发现多于 n 个更改时再次运行。
                 /MOT:m :: 监视源;如果更改,在 m 分钟时间内再次运行。

          /RH:hhmm-hhmm :: 运行小时数 - 可以启动新副本的时间。
                    /PF :: 以每个文件(而不是每个步骤)为基础检查运行小时数。

                 /IPG:n :: 程序包间的间距(ms),以释放低速线路上的带宽。

                    /SL :: 对照目标复制符号链接。

                /MT[:n] :: 使用 n 个线程进行多线程复制(默认值为 8)。
                           n 必须至少为 1,但不得大于 128。
                           该选项与 /IPG 和 /EFSRAW 选项不兼容。
                           使用 /LOG 选项重定向输出以便获得最佳性能。

    ::
    :: 文件选择选项:
    ::
                     /A :: 仅复制具有存档属性集的文件。
                     /M :: 仅复制具有存档属性的文件并重置存档属性。
        /IA:[RASHCNETO] :: 仅包含具有任意给定属性集的文件。
        /XA:[RASHCNETO] :: 排除具有任意给定属性集的文件。

      /XF 文件[文件]... :: 排除与给定名称/路径/通配符匹配的文件。
      /XD 目录[目录]... :: 排除与给定名称/路径匹配的目录。

                    /XC :: 排除已更改的文件。
                    /XN :: 排除较新的文件。
                    /XO :: 排除较旧的文件。
                    /XX :: 排除多余的文件和目录。
                    /XL :: 排除孤立的文件和目录。
                    /IS :: 包含相同文件。
                    /IT :: 包含已调整的文件。

                 /MAX:n :: 最大的文件大小 - 排除大于 n 字节的文件。
                 /MIN:n :: 最小的文件大小 - 排除小于 n 字节的文件。

              /MAXAGE:n :: 最长的文件存在时间 - 排除早于 n 天/日期的文件。
              /MINAGE:n :: 最短的文件存在时间 - 排除晚于 n 天/日期的文件。
              /MAXLAD:n :: 最大的最后访问日期 - 排除自 n 以来未使用的文件。
              /MINLAD:n :: 最小的最后访问日期 - 排除自 n 以来使用的文件。
                           (If n < 1900 then n = n days, else n = YYYYMMDD date)。

                    /XJ :: 排除接合点。(默认情况下通常包括)。

                   /FFT :: 假设 FAT 文件时间(2 秒粒度)。
                   /DST :: 弥补 1 小时的 DST 时间差。

                   /XJD :: 排除目录的接合点。
                   /XJF :: 排除文件的接合点。

     重试选项:
    /R:n :: 失败副本的重试次数: 默认为 1 百万。
    /W:n :: 两次重试间的等待时间: 默认为 30 秒。

    /REG :: 将注册表中的 /R:n 和 /W:n 保存为默认设置。

     /TBD :: 等待定义共享名称(重试错误 67)。

     日志记录选项:
    /L :: 仅列出 - 不复制、添加时间戳或删除任何文件。
    /X :: 报告所有多余的文件,而不只是选中的文件。
     /V :: 生成详细输出,同时显示跳过的文件。
     /TS :: 在输出中包含源文件的时间戳。
      /FP :: 在输出中包含文件的完整路径名称。
     /BYTES :: 以字节打印大小。

     /NS :: 无大小 - 不记录文件大小。
    /NC :: 无类别 - 不记录文件类别。
    /NFL :: 无文件列表 - 不记录文件名。

     /NDL :: 无目录列表 - 不记录目录名称。

     /NP :: 无进度 - 不显示已复制的百分比。
    /ETA :: 显示复制文件的预期到达时间。

     /LOG:文件 :: 将状态输出到日志文件(覆盖现有日志)。
     /LOG+:文件 :: 将状态输出到日志文件(附加到现有日志中)。

     /UNILOG:文件 :: 以 UNICODE 方式将状态输出到日志文件(覆盖现有日志)。
    /UNILOG+:文件 :: 以 UNICODE 方式将状态输出到日志文件(附加到现有日志中)。

     /TEE :: 输出到控制台窗口和日志文件。

    /NJH :: 没有作业标头。
     /NJS :: 没有作业摘要。

     /UNICODE :: 以 UNICODE 方式输出状态。

     作业选项 :

     /JOB:作业名称 :: 从命名的作业文件中提取参数。
    /SAVE:作业名称 :: 将参数保存到命名的作业文件
    /QUIT :: 处理命令行后退出(以查看参数)。
    /NOSD :: 未指定源目录。
     /NODD :: 未指定目标目录。
     /IF :: 包含以下文件。

     

     

    展开全文
  • 下图是我使用Robocopy复制文件的输出日志,可以看出效率是非常不错的,复制59.2G文件2729个文件152个文件夹,只用27分59 Robocopy是windows server 2003 resource kit工具箱中的一个工具,需要下载windows server...
  • Android大文件上传传之MD5篇

    千次阅读 2016-11-09 21:47:17
    前言现在越来越多的应用开始有上传大文件的需求,以及传,续传功能。由于最近学习大文件分隔上传,以及传的实现,给予分享的这种精神,我想将自己的学习过程,以及遇到的问题做一个总结,希望对有这方面需求的小...
  • Java字节码增强探秘

    千次阅读 2019-09-10 14:03:58
    1.字节码 1.1 什么是字节码? Java之所以可以“一次编译,到处运行”,一是...之所以被称之为字节码,是因为字节文件由十六进制值组成,而JVM以两个十六进制值为一组,即以字节为单位进行读取。在Java中一般是用ja...
  • 即便对那些有经验的Java开发人员来说,阅读已编译的Java字节码也很乏味。为什么我们首先需要了解这种底层的东西?这是上周发生在我身上的一个简单故事:很久以前,我在机器上做了一些代码更改,编译了一个JAR,并将...
  • 下面是一位Java程序员的亲身经历,面试腾讯PCG部门处女面挂,但并未气馁,17天后竟拿下了字节跳动的offer,特献上面试真题,以供参考学习。 腾讯PCG部门,Java后台岗(处女面挂),出来就懵了 自我介绍 项目...
  • Linux下read和write函数复制一个文件

    千次阅读 2017-07-12 19:05:13
    Path参数是要打开或创建文件的名字。Oflag参数可用来说明此函数的多个选项。 下列一个或多个常量进行“或”运算构成oflag参数(这些参数在头文件中定义) 必选项: O_RDONLY 只读打开 O_WRONLY 只写打开 O_RDWR...
  • 纵观网上及冀云前辈那本书上的文章,发现已有的资料中存在有这么几个问题:1、无法实现0秒扫雷,都是至少需要1才能完成任务;2、雷区究竟是在游戏初始化时就设置好了,还是要等玩家点击了第一处雷区方块才进行设置...
  • 操作系统之文件管理

    千次阅读 多人点赞 2020-09-22 03:05:15
    信息项:构成文件内容的基本单位(单个字节,或多个字节),各信息项之间具有顺序关系 文件内容的意义:由文件建立者和使用者解释 1.2 如何设计一个文件系统 这里先看文件管理的需求: 从用户角度 文件系统是...
  • 字节跳动 EB 级 HDFS 实践

    千次阅读 2019-12-31 09:47:14
    本文选自“字节跳动基础架构实践”系列文章。“字节跳动基础架构实践”系列文章是由字节跳动基础架构部门各技术团队及专家倾力打造的技术干货内容,和大家分享团队在基础架构发展和演进过程中的实践经...
  • 字节跳动面试总结

    千次阅读 多人点赞 2020-07-02 14:44:31
    Redis每秒能够处理处理十万请求,如果按照你上面说的,那说明它每次交互只在 1/十万 秒内完成? 有了解过Redis的源码么? MySQL用了B+Tree,Redis中的SortSet内部用了跳跃表,他们之间有什么差别?为什么MySQL不用...
  • MIDI文件格式分析(补充和勘误)

    千次阅读 2018-04-12 15:40:10
    MIDI文件格式分析(补充和勘误) 本文是对《MIDI文件格式分析》博客链接的一点补充: ...文件头一般包括文件的类型,因为Midi文件仅以.mid为扩展名的就有0类和1类两种,而大家熟悉的位图文件的格式就更多了,所以才会...
  • Redis_conf配置文件说明

    万次阅读 2015-07-10 17:24:18
    1. # Redis示例配置文件  2.  3. # 注意单位问题:当需要设置内存大小的时候,可以使用类似1k、5GB、4M这样的常见格式:  4. #  5. # 1k => 1000 bytes  6. # 1kb => 1024 bytes  7. # 1m =...
  • 今天,给大家带来一篇如何配置MySQL主从复制,以实现MySQL的读写分离。今天这篇我们是基于MySQL 5.6来实现MySQL的主从复制的。 一、服务器规划 首先我们需要两台服务器,一台作Master服务器,一台作Slave服务器。 ...
  • java输入输出--字节流处理

    千次阅读 2018-07-10 01:02:25
    字节流类为处理字节式输入输出提供了丰富的环境。 InputStream/OutputStream InputStream 是一个定义了 Java 字节流输入模式的抽象类。 该类的所有方法在出错条件下都将引发一个 IOException 异常。其声明格式...
  • HDFS分布式文件存储系统

    千次阅读 2017-09-02 15:57:21
    一、各部分介绍 1.1 NameNode ...文件操作,NameNode 负责文件元数据的操作,DataNode负责处理文件内容的读写请求,跟文件内容相关的数据流不经过NameNode,只会询问它跟哪个DataNode联系,否则NameNode会
  • 生成iso文件

    千次阅读 2011-11-12 14:03:06
    其实很简单用dd命令就可以搞定。 [guo@guo ~]$ dd if=/home/guo/me.sh of=/...159字节(159 B)已复制0.000139826 ,1.1 MB/ 上面就是把/home/guo/me.sh 文件生成为win.iso文件并保存在/home/guo/文件夹下。
  • Linux文件系统及常用命令

    千次阅读 2016-03-08 22:00:00
    Linux文件系统介绍: 一 、Linux文件结构 ... Linux使用树状目录结构,在安装的时候,安装程序已经为用户创建了文件系统和完整而固定的目录组成形式,并指定了个目录的作用和其中的文件类型。  
  • 一、前言 ... (1)creator模块:通过秘钥对+参数生成证书lic文件 (2)基于lic文件进行证书安装 (3)verify模块:结合系统应用对证书中的参数进行解析,并通过数值比较来决定系统是否可用; ...
  • 0. 文件大小与占用空间“文件大小”和“占用空间”的差别首先需要明确的是,“文件大小”代表着文件的真实大小(文件内容实际包含的全部字节数),“占用空间”往往略大于“ 文件大小”,如下图所示: “占用空间...
  • 文件系统

    万次阅读 2016-01-24 17:43:17
    一: 什么是文件系统,详见:http://zh.wikipedia.org/zh/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F 其实一句话就是管理这块文件的机制(组织方式,数据结构之类...) ...我们知道文件系统是独立的,
  • Redis复制:部分同步PSYNC详解

    千次阅读 2019-03-07 11:14:34
    在Redis2.8之前,如果从服务器在主从复制的过程中,出现了断线,重连之后需要全量同步一次主服务器上面的数据,即从服务器发送SYNC命令给主服务器,请求进行全量同步,但是断线重连之后,从服务器只是可能落后主...
  • JavaSE入门 P13 【其他】异常,File,IO,字节(符)流,字节(符)缓冲流,转换流 1.异常 2.File类 3.IO流 4.NIO(new IO) 5.IO流练习
  • 广告是支撑互联网高速发展的经济基石,也是很多互联网公司的重要收入来源。字节跳动的广告平台管理着 EB 量级的数据和服务着数以千万的商业用户,其中 ClickHouse 作为核心引擎支撑了...
  • 星际文件系统是一种点对点的分布式文件系统, 旨在连接所有有相同的文件系统的计算机设备。在某些方面, IPFS类似于web, 但web 是中心化的,而IPFS是一个单一的Bittorrent 群集, 用git 仓库分布式存储。换句话说, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 74,818
精华内容 29,927
关键字:

复制文件0字节每秒