精华内容
下载资源
问答
  • 文件同步PHP版V1.0,同步服务器文件

    热门讨论 2012-01-10 15:33:01
    文件同步 V1.0 本程序用于同步两台服务器之间的文件系统,需要CURL支持 使用方法:将本程序放在两台服务器的根目录下,登陆其中一台服务器的filesync.php,然后输入另一台服务器中filesync.php的链接地址,勾选同步类型...
  • logstash实现日志文件同步到elasticsearch深入详解

    万次阅读 热门讨论 2016-07-06 22:09:48
    引言:之前博文介绍过了mysql/oracle与ES之间的...1、目的:将本地磁盘存储的日志文件同步(全量同步、实时增量同步)到ES中。 2、源文件:[root@5b9dbaaa148a test_log]# ll -rwxrwxrwx 1 root root 170 Jul 5 08:02

    Elasticsearch 最少必要知识实战教程直播回放

    引言:

    之前博文介绍过了mysql/oracle与ES之间的同步机制。而logstash最初始的日志同步功能还没有介绍。本文就logstash同步日志到ES做下详细解读。

    1、目的:

    将本地磁盘存储的日志文件同步(全量同步、实时增量同步)到ES中。
    这里写图片描述

    2、源文件:

    [root@5b9dbaaa148a test_log]# ll
    -rwxrwxrwx 1 root root 170 Jul 5 08:02 logmachine.sh
    -rw-r--r-- 1 root root 66 Jul 5 08:25 MProbe01.log
    -rw-r--r-- 1 root root 74 Jul 5 08:28 MProbe02.log
    

    3、增量实时同步脚本:

    [root@5b9dbaaa148a test_log]# cat logmachine.sh
    #!/bin/bash
    icnt=0;
    while (true)
    do
      echo "[debug][20160703-15:00]"$icnt >> MProbe01.log
      echo "[ERROR][20160704-17:00]"$icnt >> MProbe02.log
      icnt=$((icnt+1));
    done
    

    4、logstash配置文件:

    [root@5b9dbaaa148a logstash_jdbc_test]# cat log_test.conf
    input {
      file {
      path=> [ "/usr/local/logstash/bin/test_log/MProbe01.log",
    "/usr/local/logstash/bin/test_log/MProbe02.log" ]
      #codec=>multiline {
      # pattern => "^\s"
      # what=>"previous"
      #}
      type=>"probe_log"  #类型名称
      # tags=>["XX.XX.XX.XX"]
      }
    }
    
    ###过滤
    #filter{
    # grok {
    # match => ["message","mailmonitor"]
    # add_tag => [mailmonitor]
    # }
    
    # grok {
    # match => [ "message", "smsmonitor" ]
    # add_tag => [smsmonitor]
    # }
    # ....
    #}
    
    ###output to es
    output {
      elasticsearch {
      hosts => "10.8.5.101:9200"
      index => "mprobe_index"     #索引名称
      #template_name => "mprobelog"
      #document_id => "%{id}"
      }
      stdout { codec => json_lines }
    }
    

    5、同步测试:

    [root@5b9dbaaa148a bin]# ./logstash -f ./logstash_jdbc_test/log_test.conf
    Settings: Default pipeline workers: 24
    Pipeline main started
    {"message":"[DEbug][20160305-15:35]testing02","@version":"1","@timestamp":"2016-07-05T07:26:08.043Z","path":"/usr/local/logstash/bin/test_log/MProbe01.log","host":"5b9dbaaa148a"
    

    6、结果验证

    (1)日志记录:

    [root@5b9dbaaa148a test_log]# tail -f MProbe01.log
    [DEbug][20160305-15:35]testing02
    [DEbug][20160305-15:35]testing01
    ^C
    [root@5b9dbaaa148a test_log]# tail -f MProbe02.log
    [DEbug][20160305-15:35]testing02_001
    [DEbug][20160305-15:35]testing02_003
    

    (2)ES记录
    这里写图片描述

    ——————————————————————————————————
    更多ES相关实战干货经验分享,请扫描下方【铭毅天下】微信公众号二维码关注。
    (每周至少更新一篇!)

    这里写图片描述
    和你一起,死磕Elasticsearch
    ——————————————————————————————————

    2016年7月6日 22:11 思于家中床前

    作者:铭毅天下
    转载请标明出处,原文地址:http://blog.csdn.net/laoyang360/article/details/51842744
    如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!

    展开全文
  • FastDFS文件同步原理与文件目录简介

    千次阅读 2020-06-20 20:16:29
    FastDFS文件同步原理 同一组内的StorageServer之间是对等的,文件上传、删除等操作可以在任意一台StorageServer上进行; 文件同步(添加/删除/修改)只在同组内的StorageServer之间进行,采用push方式,即源服务器...

    FastDFS文件同步原理

    1. 同一组内的StorageServer之间是对等的,文件上传、删除等操作可以在任意一台StorageServer上进行;
    2. 文件同步(添加/删除/修改)只在同组内的StorageServer之间进行,采用push方式,即源服务器同步给目标服务器;
    3. 源头数据才需要同步,备份数据不需要再次同步,否则就会构成环路了;
    4. 上述第二条规则有个例外,就是新增加一台StorageServer时,由已有的一台StorageServer将已有的所有数据(包括源头数据和备份数据)同步给该新增服务器。

    FastDFS文件目录介绍

    FastDF服务端目录介绍

    TrackerServer

        ${base_path}
        |__data
        |     |__storage_groups.dat:存储分组信息
        |     |__storage_servers.dat:存储服务器列表
        |__logs 
           |__trackerd.log:tracker server日志文件
    

    StorageServer

        ${base_path}
        |__data
        |     |__.data_init_flag:当前storage server 初始化信息
        |     |__storage_stat.dat:当前storage server统计信息
        |     |__sync:存放数据同步相关文件
        |     |     |__binlog.index:当前的binlog文件索引号
        |     |     |__binlog.###:存放更新操作记录(日志)
        |     |     |__${ip_addr}_${port}.mark:存放同步的完成情况
        |     |
        |     |__一级目录:256个存放数据文件的目录,如:00, 1F
        |           |__二级目录:256个存放数据文件的目录
        |__logs
           |__storaged.log:storage server日志文件
    

    其他篇章文章

    1. FastDFS文件系统简介与架构原理
    2. 文件上传原理
    3. 文件下载原理
    4. FastDFS文件同步原理与文件目录简介
    5. 服务端与客户端之间的通讯协议(自定义的通讯协议)

    展开全文
  • Ftp实现文件同步

    千次阅读 2019-07-24 21:40:43
    通常在做服务器与服务器文件、服务器与本地文件同步时通过Ftp服务实现,下面就以服务器文件和本地同步为例,介绍一下Ftp同步文件:首先建立一个Ftp站点服务,基本身份验证登陆,端口号为默认的21;Ftp文件同步前端界面...

    通常在做服务器与服务器文件、服务器与本地文件同步时通过Ftp服务实现,下面就以服务器文件和本地同步为例,介绍一下Ftp同步文件:
    首先建立一个Ftp站点服务,基本身份验证登陆,端口号为默认的21;
    Ftp文件同步前端界面如下:

    Ftp文件同步后台实现

      1 #region 获取Ftp服务端文件比较替换
      2         /// <summary>
      3         /// 比较替换
      4         /// </summary>
      5         private void btnQuery_Click(object sender, EventArgs e)
      6         {           
      7             msg.AppendText(Environment.NewLine + "开始连接...");
      8             FtpHelp fw = new FtpHelp(service.Text.Trim(), "", lognName.Text.Trim(), Pwd.Text.Trim());
      9             if (fw.ISOK())
     10             {
     11                 msg.AppendText(Environment.NewLine + "连接成功!\r\n");
     12                 Replace(service.Text.Trim(), hostAdress.Text.Trim());
     13             }
     14             else
     15             {
     16                 msg.AppendText(Environment.NewLine + "连接失败!\r\n");
     17             }      
     18         }
     19         private bool _isOver = false;
     20         private void Replace(string ftpAdress, string hostAdress)
     21         {
     22             if (!_isOver)
     23             {
     24                 _isOver = true;
     25                 //链接ftp服务
     26                 FtpHelp ftphelp = new FtpHelp(service.Text.Trim(), "", lognName.Text.Trim(), Pwd.Text.Trim());
     27                 //获取本地文件
     28                 LogHostFile[] hostFile = GetFile(hostAdress);
     29                 LogWriter.LogInfo("获取本地文件完成共:" + hostFile.Count());
     30                 //获取FTP服务器文件
     31                 DateTime begin = DateTime.Now;
     32                 FtpFile[] files = ftphelp.GetFilesList("ftp://" + ftpAdress.Trim(), "");
     33                 DateTime end = DateTime.Now;
     34                 time.Text = "获取服务文件用时:" + (end - begin).Milliseconds.ToString() + "ms;共" + files.Count() + "个文件";
     35                 if (files.Count() == 0)
     36                 {
     37                     LogWriter.LogInfo("获取服务器文件完成共:" + files.Count() + "可能是服务器连接失败或真的没有文件请管理员查看");
     38                 }
     39                 else
     40                 {
     41                     LogWriter.LogInfo("获取服务器文件完成共:" + files.Count());
     42                 }
     43                 Dictionary host = new Dictionary();
     44                 Dictionary ftp = new Dictionary();
     45                 if (hostAdress == "")
     46                 {
     47                     LogWriter.LogError("本地路径为空");
     48                 }
     49                 else
     50                 {
     51                     try
     52                     {
     53                         //遍历Ftp服务器端的文件
     54                         ftp.Clear();
     55                         foreach (FtpFile ftpfile in files)
     56                         {
     57                             if (!ftp.ContainsKey(ftpfile.FileFullName))
     58                             {
     59                                 ftp.Add(ftpfile.FileFullName, ftpfile.FileSize);
     60                             }
     61                         }
     62                         //遍历本地服务器端的文件
     63                         host.Clear();
     64                         foreach (LogHostFile ftpfile in hostFile)
     65                         {
     66                             if (!host.ContainsKey(ftpfile.FileFullName))
     67                             {
     68                                 host.Add(ftpfile.FileFullName, ftpfile.FileSize);
     69                             }
     70                         }
     71                     }
     72                     catch (Exception ex)
     73                     {
     74                         LogWriter.LogError("将本地和服务文件放入Dictionary集合中出错:" + ex.Message);
     75                     }
     76                     finally
     77                     {
     78                         _isOver = false;
     79                     }
     80                     LogWriter.LogInfo("开始循环服务器中的文件比较替换");
     81                     bool IsRelpace = false;
     82                     foreach (KeyValuePair ftpfile in ftp)
     83                     {
     84                         #region 判断服务器端的文件是否在本地存在
     85                         //判断服务器端的文件是否在本地存在
     86                         if (host.Count != 0)//如果本地没有文件
     87                         {
     88                             #region 是否有这个文件
     89                             if (host.ContainsKey(ftpfile.Key))
     90                             {
     91                                 #region 如果存在判断两个文件的大小是否相等
     92                                 //如果存在判断两个文件的大小是否相等
     93                                 if (host[ftpfile.Key] != ftpfile.Value)
     94                                 {
     95                                     IsRelpace = true;
     96                                     LogWriter.LogInfo(ftpfile.Key + " 文件在本地的大小:" + host[ftpfile.Key] + ";在服务器的大小:" + ftpfile.Value);
     97                                     //不相等就等换
     98                                     try
     99                                     {
    100                                         if (ftphelp.Download(hostAdress, ftpfile.Key.Trim()))
    101                                         {
    102                                             msg.AppendText(Environment.NewLine + "开始替换" + "ftp://" + ftpAdress.Trim() + "/" + ftpfile.Key + "\r\n");
    103                                             msg.AppendText(Environment.NewLine + "替换中..." + "\r\n");
    104                                             msg.AppendText(Environment.NewLine + "替换成功!" + "\r\n");
    105                                             LogWriter.LogInfo("替换文件:" + ftpfile.Key.Trim() + "本地文件大小:" + host[ftpfile.Key] + ";   FTP文件大小:" + ftpfile.Value);
    106                                         }
    107                                         else
    108                                         {
    109                                             msg.AppendText(Environment.NewLine + "替换失败!" + "\r\n");
    110                                             LogWriter.LogError("替换文件:" + ftpfile.Key.Trim() + "失败");
    111                                         }
    112                                     }
    113                                     catch (Exception ex)
    114                                     {
    115                                         LogWriter.LogError("文件" + ftpfile.Key + "比较替换时失败:" + ex.Message);
    116                                     }
    117                                     finally
    118                                     {
    119                                         _isOver = false;
    120                                     }
    121                                 }
    122                                 #endregion
    123                             }
    124                             else
    125                             {
    126                                 IsRelpace = true;
    127                                 try
    128                                 {
    129                                     if (ftphelp.Download(hostAdress, ftpfile.Key.Trim()))
    130                                     {
    131                                         msg.AppendText(Environment.NewLine + "本地没有的文件开始下载" + "ftp://" + ftpAdress.Trim() + "/" + ftpfile.Key);
    132                                         msg.AppendText(Environment.NewLine + "下载中...");
    133                                         msg.AppendText(Environment.NewLine + "下载成功!");
    134                                         LogWriter.LogInfo("下载服务器文件" + ftpfile.Key.Trim());
    135                                     }
    136                                     else
    137                                     {
    138                                         msg.AppendText(Environment.NewLine + "下载新文件失败!");
    139                                         LogWriter.LogError("下载服务器文件" + ftpfile.Key.Trim() + "失败");
    140                                     }
    141                                 }
    142                                 catch (Exception ex)
    143                                 {
    144                                     LogWriter.LogError("文件" + ftpfile.Key + "下载时失败:" + ex.Message);
    145                                 }
    146                                 finally
    147                                 {
    148                                     _isOver = false;
    149                                 }
    150                             }
    151                             #endregion
    152                         }
    153                         else
    154                         {
    155                             IsRelpace = true;
    156                             try
    157                             {
    158                                 if (ftphelp.Download(hostAdress, ftpfile.Key.Trim()))
    159                                 {
    160                                     msg.AppendText(Environment.NewLine + "本地没有的文件开始下载" + "ftp://" + ftpAdress.Trim() + "/" + ftpfile.Key);
    161                                     msg.AppendText(Environment.NewLine + "下载中...");
    162                                     msg.AppendText(Environment.NewLine + "下载成功!");
    163                                     LogWriter.LogInfo("下载服务器文件" + ftpfile.Key.Trim());
    164                                 }
    165                                 else
    166                                 {
    167                                     msg.AppendText(Environment.NewLine + "下载新文件失败!");
    168                                     LogWriter.LogError("下载服务器文件" + ftpfile.Key.Trim() + "失败");
    169                                 }
    170                             }
    171                             catch (Exception ex)
    172                             {
    173                                 LogWriter.LogError("文件" + ftpfile.Key + "下载时失败:" + ex.Message);
    174                             }
    175                             finally
    176                             {
    177                                 _isOver = false;
    178                             }
    179                         }
    180                         #endregion
    181                     }
    182                     if (IsRelpace)
    183                     {
    184                         LogWriter.LogInfo("替换工作完成!!");
    185                     }
    186                     else
    187                     {
    188                         LogWriter.LogInfo("FTP和本地的文件没有不同不需要替换");
    189                     }
    190                 }
    191             }
    192             else
    193             {
    194                 LogWriter.LogInfo("上一次替换未执行完成不进行下一次的操作!");
    195             }
    196         }
    197         #endregion
    198         #region 获取本地文件
    199         public LogHostFile[] GetFile(string str)
    200         {
    201             List hostFile = new List();
    202             if (str != "")
    203             {
    204                 string filepath = hostAdress.Text.Trim();
    205                 DirectoryInfo theFolder = new DirectoryInfo(str);
    206                 //LogWriter.LogInfo(str);
    207                 FileSystemInfo[] fileinfo = theFolder.GetFileSystemInfos();
    208                 foreach (FileSystemInfo NextFolder in fileinfo)
    209                 {
    210                     if (this.GetFileType(NextFolder.FullName) == 0)//wenjian
    211                     {
    212                         FileInfo Next = (FileInfo)NextFolder;
    213                         long size = Next.Length;
    214                         //获取文件的名称
    215                         hostFile.Add(new LogHostFile() { FileSize = size, FileFullName = NextFolder.FullName.Replace("\\", "/").Remove(0, filepath.Length).Substring(1) });
    216                         LogWriter.LogInfo(NextFolder.FullName);
    217                     }
    218                     else if (this.GetFileType(NextFolder.FullName) == 1)//wenjianjia
    219                     {
    220                         LogHostFile[] hostfile = GetFile(NextFolder.FullName);
    221                         foreach (LogHostFile file in hostfile)
    222                         {
    223                             hostFile.Add(file);
    224                         }
    225                     }
    226                 }
    227             }
    228             else
    229             {
    230                 LogWriter.LogError("没有给本地文件路径!");
    231             }
    232             return hostFile.ToArray();
    233         }
    234         #endregion
    235         /// <summary>
    236         /// 判断是文件还是文件夹
    237         /// </summary>
    238         public int GetFileType(string path)
    239         {
    240             if (File.Exists(path))
    241             {
    242                 return 0;
    243                 // 是文件
    244             }
    245             else if (Directory.Exists(path))
    246             {
    247                 return 1;
    248                 // 是文件夹
    249             }
    250             else
    251             {
    252                 return 2;
    253                 // 都不是
    254             }
    255         }
    View Code

    Ftp操作帮助类

      1 public class FtpHelp
      2     {
      3         string ftpServerIP;
      4         string ftpRemotePath;
      5         string ftpUserName;
      6         string ftpPassword;
      7         string ftpURI;
      8         #region 连接FTP
      9         /// <summary>
     10         /// 连接FTP
     11         /// </summary>
     12         /// FTP连接地址
     13         /// 指定FTP连接成功后的当前目录, 如果不指定即默认为根目录
     14         /// 用户名
     15         /// 密码
     16         public FtpHelp(string FtpServerIP, string FtpRemotePath, string FtpUserName, string FtpPassword)
     17         {
     18             ftpServerIP = FtpServerIP;
     19             ftpRemotePath = FtpRemotePath;
     20             ftpUserName = FtpUserName;
     21             ftpPassword = FtpPassword;
     22             ftpURI = "ftp://" + ftpServerIP + "/";
     23         }
     24         /// <summary>
     25         /// 是否连接成功
     26         /// </summary>
     27         public bool ISOK()
     28         {
     29             try
     30             {
     31                 FtpWebRequest reqFTP;
     32                 reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));
     33                 reqFTP.Credentials = new NetworkCredential(ftpUserName, ftpPassword);
     34                 return true;
     35             }catch(Exception e)
     36             {
     37                 return false;
     38             }           
     39          }
     40         #endregion
     41         #region  下载
     42         /// <summary>
     43         /// 下载
     44         /// </summary>
     45         public bool Download(string filePath, string fileName)
     46         {
     47             FtpWebRequest reqFTP;
     48             try
     49             {
     50                 string newpath="";
     51                 if (fileName.Contains("/"))
     52                 {
     53                     newpath=fileName.Substring(0,fileName.LastIndexOf(@"/"));
     54                     newpath = newpath.Replace("/", "\\");
     55                 }
     56                 string path = filePath+"\\" + newpath;
     57                 DirectoryInfo di = new DirectoryInfo(path);
     58                 if (!di.Exists)
     59                 {
     60                     di.Create();
     61                 }
     62                 FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create);
     63                 reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileName));
     64                 reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
     65                 reqFTP.UseBinary = true;
     66                 reqFTP.Credentials = new NetworkCredential(ftpUserName, ftpPassword);
     67                 FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
     68                 Stream ftpStream = response.GetResponseStream();
     69                 long cl = response.ContentLength;
     70                 int bufferSize = 2048;
     71                 int readCount;
     72                 byte[] buffer = new byte[bufferSize];
     73                 readCount = ftpStream.Read(buffer, 0, bufferSize);
     74                 while (readCount &gt; 0)
     75                 {
     76                     outputStream.Write(buffer, 0, readCount);
     77                     readCount = ftpStream.Read(buffer, 0, bufferSize);
     78                 }
     79                 ftpStream.Close();
     80                 outputStream.Close();
     81                 response.Close();
     82                 return true;
     83             }
     84             catch (Exception ex)
     85             {
     86                 LogWriter.LogError("文件" + fileName + "下载失败:" + ex.Message);
     87                 // Insert_Standard_ErrorLog.Insert("FtpWeb", "Download Error --&gt; " + ex.Message);
     88                 return false;
     89             }
     90         }
     91         #endregion
     92         #region 获取当前目录下明细(包含文件和文件夹)
     93         string name = "";
     94         public FtpFile[] GetFilesList(string ftpURI,string name)
     95         {
     96             List result = new List();           
     97             try
     98             {
     99                 FtpWebRequest ftp;
    100                 Uri uri = new Uri(ftpURI);
    101                 LogWriter.LogInfo(uri.Host);
    102                 LogWriter.LogInfo(uri.HostNameType.ToString());
    103                 LogWriter.LogInfo(uri.IsFile.ToString());
    104                 LogWriter.LogInfo(uri.LocalPath);
    105                 ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));
    106                 ftp.Credentials = new NetworkCredential(ftpUserName, ftpPassword);
    107                 ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
    108                 ftp.Timeout = 10000;
    109                 string aa = "";
    110                 using (WebResponse response = ftp.GetResponse())
    111                 {
    112                     using (StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.ASCIIEncoding.UTF8))
    113                     {
    114                         aa = reader.ReadToEnd();
    115                         reader.Close();
    116                         response.Close();
    117                     }
    118                 }
    119                 string[] ftpFileList = aa.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
    120                 foreach(string line in ftpFileList)
    121                 {
    122                     if (line.Contains(""))
    123                     {
    124                         string dirName = GetFileName(line);
    125                         string newUrl = ftpURI + @"/" + dirName;
    126                         string newName = name + @"/" + dirName;
    127                         FtpFile[] files = GetFilesList(newUrl, newName);
    128                         foreach (FtpFile file in files)
    129                         {
    130                             result.Add(file);
    131                         }
    132                     }
    133                     else
    134                     {
    135                         string fileName = GetFileName(line);
    136                         string[] ftpFile = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
    137                         //获取文件的大小 和全路径
    138                         result.Add(new FtpFile() { FileSize = int.Parse(ftpFile[2]), FileFullName = (name + @"/" + fileName).Substring(1) });
    139                     }
    140                 }                                
    141             }
    142             catch (Exception ex)
    143             {                
    144                 string message = ex.Message;
    145                 // Insert_Standard_ErrorLog.Insert("FtpWeb", "GetFilesDetailList Error --&gt; " + ex.Message);
    146                 LogWriter.LogError(ex.Message);              
    147             }
    148             return result.ToArray();
    149         }
    150         private string GetFileName(string line)
    151         {
    152             string newStr = line.Substring(line.IndexOf(" "));
    153             newStr = newStr.TrimStart();
    154             newStr = newStr.Substring(newStr.IndexOf(" "));            
    155             newStr = newStr.TrimStart();
    156             newStr = newStr.Substring(newStr.IndexOf(" "));          
    157             return newStr.Trim();
    158         }        
    159         /// <summary>
    160         /// 获取当前目录下明细(包含文件和文件夹)
    161         /// </summary>
    162         public string[] GetFilesDetailList()
    163         {
    164             string[] downloadFiles;
    165             try
    166             {
    167                 StringBuilder result = new StringBuilder();
    168                 FtpWebRequest ftp;
    169                 ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));
    170                 ftp.Credentials = new NetworkCredential(ftpUserName, ftpPassword);
    171                 ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
    172                 WebResponse response = ftp.GetResponse();
    173                 StreamReader reader = new StreamReader(response.GetResponseStream());
    174                 //string aa = reader.ReadToEnd();
    175                 string line = reader.ReadLine();
    176                 while (line != null)
    177                 {
    178                     result.Append(line);
    179                     result.Append("\n");
    180                     line = reader.ReadLine();
    181                 }
    182                 result.Remove(result.ToString().LastIndexOf("\n"), 1);
    183                 reader.Close();
    184                 response.Close();
    185                 return result.ToString().Split('\n');
    186             }
    187             catch (Exception ex)
    188             {
    189                 downloadFiles = null;
    190                 string message = ex.Message;
    191                 // Insert_Standard_ErrorLog.Insert("FtpWeb", "GetFilesDetailList Error --&gt; " + ex.Message);
    192                 return downloadFiles;
    193             }
    194         }
    195         #endregion
    196     }
    View Code

    Ftp文件同步工具最终效果

    转载于:https://www.cnblogs.com/huhangfei/p/4989176.html

    展开全文
  • fastdfs文件同步延迟

    千次阅读 2019-01-08 11:28:17
    文件同步延迟问题的提出  客户端将一个文件上传到一台Storage server后,文件上传工作就结束了。由该Storage server根据binlog中的上传记录将这个文件同步到同组的其他Storage server。这样的文件同步方式是异步...

      文件同步延迟问题的提出

        客户端将一个文件上传到一台Storage server后,文件上传工作就结束了。由该Storage server根据binlog中的上传记录将这个文件同步到同组的其他Storage server。这样的文件同步方式是异步方式,异步方式带来了文件同步延迟的问题。新上传文件后,在尚未被同步过去的Storage server上访问该文件,会出现找不到文件的现象。FastDFS是如何解决文件同步延迟这个问题的呢?

      文件的访问分为两种情况:文件更新和文件下载。文件更新包括设置文件附加属性和删除文件。文件的附加属性包括文件大小、图片宽度、图片高度等。FastDFS中,文件更新操作都会优先选择源Storage server,也就是该文件被上传到的那台Storage server。这样的做法不仅避免了文件同步延迟的问题,而且有效地避免了在多台Storage server上更新同一文件可能引起的时序错乱的问题。

    那么文件下载是如何解决文件同步延迟这个问题的呢?

      要回答这个问题,需要先了解文件名中包含了什么样的信息。Storage server生成的文件名中,包含了源Storage server的IP地址和文件创建时间等字段。文件创建时间为UNIX时间戳,后面称为文件时间戳。从文件名或文件ID中,可以反解出这两个字段。

      然后我们再来看一下,Tracker server是如何准确地知道一个文件已被同步到一台Storage server上的。前面已经讲过,文件同步采用主动推送的方式。另外,每台storage server都会定时向tracker server报告它向同组的其他storage server同步到的文件时间戳。当tracker server收到一台storage server的文件同步报告后,它会依次找出该组内各个storage server(后称作为S)被同步到的文件时间戳最小值,作为S的一个属性记录到内存中。

     

    FastDFS对文件同步延迟问题的解决方案

        下面我们来看一下FastDFS采取的解决方法。

        一个最简单的解决办法,和文件更新一样,优先选择源Storage server下载文件即可。这可以在Tracker server的配置文件中设置,对应的参数名为download_server。

    另外一种选择Storage server的方法是轮流选择(round-robin)。当Client询问Tracker server有哪些Storage server可以下载指定文件时,Tracker server返回满足如下四个条件之一的Storage server:

      1、该文件上传到的源Storage server,文件直接上传到该服务器上的;

    2、文件创建时间戳 < Storage server被同步到的文件时间戳,这意味着当前文件已经被同步过来了;

    3、文件创建时间戳=Storage server被同步到的文件时间戳,且(当前时间—文件创建时间戳) > 一个文件同步完成需要的最大时间(如5分钟);

    4、(当前时间—文件创建时间戳) > 文件同步延迟阈值,比如我们把阈值设置为1天,表示文件同步在一天内肯定可以完成。

    展开全文
  • Java文件同步开源项目Sync 使用简单的命令即可完成文件系统的同步,可以在其上自己包装业务 含源码和jar
  • 引言:之前博文介绍过了mysql/oracle与ES...1、目的:将本地磁盘存储的日志文件同步(全量同步、实时增量同步)到ES中。 2、源文件:[root@5b9dbaaa148a test_log]# ll -rwxrwxrwx 1 root root 170 Jul 5 08:02 ...
  • 文件同步工具。具有非常直观的用户界面 。由向导对话框设定同步任务,所有先进的 功能,都只不过是向导对话框的一个选项,并且有tooltip说明。 《BestSync2011》提供很多免费的功能。免费的功能对于一般的同步和...
  • 使用rsync 实现服务器文件同步

    千次阅读 2017-12-04 17:34:00
    隔壁公司同事询问我linux 文件同步怎么做?这个问题一下问住我了。之前虽然有过了解。但也没用在实际工作上面。今天就大概给大家说一下linux 文件同步。 分别在两个服务器下面新建两个自己能测试的文件夹,如果...
  • <br />本文和大家分享Windows服务器网站文件同步备份解决方案,来自博客园dudu的文章。对于一个网站来说,用户上传文件的同步备份是必需要解决的问题。对于有着巨量上传文件的大型网站,一般采用分布式存储...
  • eclipse 文件同步插件

    千次阅读 2015-05-05 09:46:46
    本文主要介绍一个eclipse文件同步插件的安装和使用   在eclipse中经常碰到需要保持两个文件夹中文件同步的情况,这个在编写测试时尤为常见,经常需要测试部分需要和被测部分保持一些文件(如配置文件、资源...
  • FastDFS文件同步机制

    千次阅读 2017-03-21 23:01:38
    FastDFS文件同步机制在FastDFS的服务器端配置文件中,bind_addr这个参数用于需要绑定本机IP地址的场合。只有这个参数和主机特征相关,其余参数都是可以统一配置的。在不需要绑定本机的情况下,为了便于管理和维护,...
  • Rsync是一个强大的文件同步工具。可以镜像保存整个目录树和文件系统,可保持原来文件的权限、时间、软硬链接等等,无须特殊权限即可安装。第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync ...
  • Android阿里云OSS多文件同步上传和删除方案

    万次阅读 多人点赞 2016-08-04 17:16:29
    想到之前做过的七牛云开发,决定用java递归的方式实现多文件同步上传和删除,递归有风险,使用需谨慎哈。 阿里云的配置和初始化官方已经说的很明白了,那么这里就直接了当说关键的: 一般来说我们都是获得多文件...
  • 服务端ip 10.0.33.156 客户端ip 10.0.33.157 服务端的/etc/rsyncd.conf 配置文件如下: ...我两台机器上都有test用户,并且也属于test组,为什么会出现同步之后的用户和用户组不一致,这个问题该如何解决
  • 项目最近需要将一台服务器文件同步到另一台,由于文件有 100 来 M 不适合使用 MQ 来操作,就了解了一下 Camel FTP,记录一下用法和一些问题。
  • 超大文件同步如何实现?

    千次阅读 2018-08-14 16:24:03
    随着计算机技术和互联网的快速发展...如何保证多个设备之间的数据一致性以及如何高效地进行文件同步成为了人们关注的焦点,除此之外,数据的可追溯性也逐渐进入人们的视野。 现有的文件同步软件大都没有提供数据的...
  • windows 8 文件同步

    万次阅读 2012-11-02 10:36:22
    文件同步 除了在设置上的同步外,在之前我们曾介绍过 Windows 8 还使用 Skydrive 云服务来实现不同 PC 之间的文件的同步。 新的 Microsoft 帐户默认开通其自家的 SkyDrive 服务,可以将文档、照片、手机拍摄的...
  • Windows文件同步到Linux

    千次阅读 2012-02-22 21:19:46
    于是不得不把win下的alert文件同步到Linux系统中,这里我将过程记录下来;   这里只配置windows-->linux的文件同步 1.在windows2003上面安装cwrsync的服务器端软件,windows软件安装很简单 你懂的 2.修改...
  • 软件实现windows文件同步

    千次阅读 2013-09-25 09:18:42
    对于一个网站来说,用户上传文件的同步备份是必需要解决的问题。对于有着巨量上传文件的大型网站,一般采用分布式存储系统。而对于上传文件量不是很大的网站,只要在另外一台服务器上...cwRsync是Windows平台的文件同步
  • SyncToy 文件同步工具的定时同步方案简述工具SynctoyPowerShellbat批处理和随系统启动具体实施第一步设置sync同步规则第二步上高潮,我们来看看ps1脚本怎么写第三步我们来添加随系统启动,并隐藏窗口第四步我们重新...
  • 分布于不同云计算中心的多台云服务器,通常需要进行文件同步,以满足业务的需要。传统的文件同步方案,部署繁琐,同步实时性差,无法令人满意。 端端Clouduolc,一款纯p2p方式的文件实时同步和实时备份软件,以最...
  • 文件同步工具GoodSync简介

    千次阅读 2014-10-22 09:33:08
    内容转自于百度百科:... 文件同步工具GoodSync 可以实现两台电脑或者电脑与U盘之间的数据和文件的同步转换。通过此工具,可以备份U盘中Pass2Go 中的数据或者其他文件到个人电脑的硬盘上。
  • Qt:局域网文件同步工具

    千次阅读 2015-01-16 19:12:35
    Qt:局域网文件同步工具
  • 文件同步的含义就是让两个或多个文件夹里的文件保持一致,或者按需要部分保持一致。 需要同步的文件夹可以是同一台计算机上,也可以是在不同计算机上,甚至是异地的。如果要同步的文件夹在同一台计算机上,则属于...
  • 文件同步工具BT Sync介绍和使用说明

    千次阅读 2019-06-25 18:05:51
    简而言之,BT sync 是一个文件同步工具,让你在几台不同的设备之间,同步文件。 既然是“文件同步工具”,那么最基本的“增量同步”功能,当然是必不可少的。另外,据俺测试:同步完成之后,如果在“发起端”对...
  • // under Python 菜鸟表示写web时 每次修改完后把文件往VPS上丢很麻烦 用ssh sshfs scp都太慢 小东西又懒得...Python利用rsync自动同步服务器与本地文件同步 http://smilehacker.com/li-yong-rsynczi-dong-tong-bu-
  • linux两个系统间文件同步

    千次阅读 2013-07-11 17:27:48
    在Linux上,远程文件同步通过 rsync 实现,目前多数Linux上都已经安装了rsync。 由于rsync仅复制修改过的文件,因此能最大限度的减少需要同步的文件。 由于rsync同步时,每次都需要用户输入远程服务器的密码,因此...
  • C#文件同步学习心得

    千次阅读 2009-08-01 10:13:00
    前段时间公司要求写个文件同步的服务,之前了解了一些相关资料,觉得难度也不是很大,就快速的完成了文件同步的功能,后来同事提醒我一个有关测试应用的问题,恍然大悟,有不少问题居然没有考虑进去,而且这才是这个服务最...
  • 文件同步工具bigfilesync使用手册 设置环境变量  解压bigfilesync-1.0.zip到电脑的任意目录下,比如D:\bigfilesync-1.0,然后将D:\bigfilesync-1.0\bin设置到系统的环境变量path中。 命令列表: sync [-s] ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,183,158
精华内容 473,263
关键字:

文件同步