/--- date: 2018-04-13 20:41:36 +0800 categories: 技术 ---/

Linux开发机和本地同步文件的几种方法

因为Linux系统的便利性,我习惯于用一台Linux系统的机器当作开发机,通过ssh登录来进行开发工作,日常则使用一台mac电脑或者windows系统的机器。这样便会产生一个开发机和本地文件同步的问题。下面是几种方法。

方法一:rz、sz

rzsz命令是由lrzsz软件包提供的,所以在使用之前,需要在开发机上进行安装:

yum install lrzsz

由于这两个命令是通过ZModem协议进行文件传输的,所以只有在支持该协议的终端(windows下可以用Xshell、SecureCRT,mac下可以用SecureCRT)上才能顺利使用。

这种方式可以很方便的解决单个或少量几个文件的同步问题,大文件可以配合参数-be使用。但是当文件数涉及到代码工程的量级上时,这时一个文件一个文件的同步就会显得很吃力。

方法二:ftp、sftp服务

在转战使用samba方式之前,我使用过这种方式进行代码工程量级上的文件同步,首先需要开发机开启ftp、sftp服务,然后本地安装相应的客户端(比如FileZilla,Sublime Text编辑器可以配合sftp插件)。

方法三:samba服务

samba服务是我推荐使用的方法。该服务由samba软件包提供,samba-clientsamba-common软件包则分别提供了当Linux做为samba client端时所需要的工具指令和主要配置文件(smb.conf)、语法检验指令(testparm)等等。具体使用时,按需要在开发机上配置好共享目录,然后开启samba服务,便可在本地挂载开发机上的共享目录。步骤如下:

  1. 安装与服务管理

    # 安装
    yum install -y samba samba-client samba-common
    
    # 使用systemctl进行服务管理
    systemctl enable smb.service
    systemctl status smb.service
    systemctl start smb.service
    # 也可使用具体命令进行服务管理
    /etc/init.d/smb status
    /etc/init.d/smb start
  2. 配置

    samba服务的主要配置文件为/etc/samba/smb.conf。下面是一个共享系统用户家目录的通用配置:

    [global]
            workgroup = WORKGROUP  # windows机器的工作组一般默认为WORKGROUP,所以需要共享给windows机器时,需设置为WORKGROUP
            server string = local centos work env  # 随意文本
            netbios name = local-centos-server  # 随意文本
            # display charset = utf8  # 高版本的samba服务可以没有这三项设置
            # unix charset = utf8
            # dos charset = cp950
            security = user
            passdb backend = tdbsam
    [homes]
            comment = Home Directories
            browseable = No
            writable = yes
            create mode = 0664
            directory mode = 0775

    配置好修改完成后,可使用testparm命令检测配置是否正确,如下:

    testparm
  3. 添加用户、测试

    # 将xsddz添加到samba服务登录用户中,并设置samba服务的登录密码
    pdbedit -a xsddz
    # 查看当前的samba服务登录用户列表
    pdbedit -L
    
    # 更改xsddz的samba服务登录密码
    # (可用 -a 参数来添加用户,如:
    #  smbpasswd -a xsddz 和
    #  pdbedit -a xsddz 效果一样)
    smbpasswd xsddz
    
    # 重启服务
    systemctl restart smb.service
    
    # 在开启服务的当前机器上,使用smbclient命令测试,用法如下
    # smbclient -L [//主机或IP] [-U 使用者账号]
    smbclient -L //127.0.0.1 -U xsddz
  4. 其他注意事项

    如果开发机上开启了SELinux服务,则需要将相应的samba选项打开,如下:

    # 查看所有关于samba的选项及状态
    getsebool -a | grep samba
    # 打开家目录的选项开关
    setsebool -P samba_enable_home_dirs=1

    如果开发机开启了防火墙服务,这需要将samba放行,firewalld示例如下:

    # 查看当前放行的服务
    firewall-cmd --list-services
    # 添加samba服务
    firewall-cmd --permanent --add-service=samba
    # 重启防火墙
    firewall-cmd --reload
  5. 本地挂载

    mac机器下,打开【Finder】,使用command+k组合键打开连接远程服务器窗口,输入smb://10.211.55.4/,点击【连接】,输入用户名密码便可完成挂载操作。如下:

    mac挂载samba mac挂载samba

    windows机器下,打开任意文件夹输入\\10.211.55.4,输入用户名密码便可完成挂载操作;需要断开时,在命令提示符中输入net use * /del /y,或者注销、重启系统。如下:

    win挂载samba win挂载samba win挂载samba win挂载samba