Unison在Linux下的安装与使用

这是一篇在公司写的文档,但不涉及公司隐私。几乎所有内容参考于:https://www.cnblogs.com/welcomer/p/5068287.html 引言 编写目的 编写本文档是为了让读者快速上手使用Unison进行两台Linux服务器文件进行同步。 前景 Unison是windows和unix平台下都可以使用的双向文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致。 unison 拥有其它一些同步工具或文件系统的相同特性,但也有自己的特点: 跨平台使用; 对内核和用户 权限 没有特别要求; unison 是双向的,它能自动 处理两分拷贝中更新没有冲突的部分,有冲突的部分将会显示出来让用户选择更新策略; 只要是能连通的两台主机 ,就可以运行 unison ,可以直接使用 socket 连接或安全的 ssh 连接方式,对带宽 的要求不高,使用类似 rsync 的压缩传输协议。 Unison双向同步的一个缺点是,对于同名文件在两个同步文件夹中都被修改时,unison是不会去同步的,因为unison无法判断以那个为准。 定义 本文档介绍如何同步两台服务器,为表述方便,将第一台服务器命名为“服务器1”,操作该服务器的用户为“system1”;将第二台服务器命名为“服务器2”,操作该服务器的用户命名为“system2”。 参考资料 《使用Unison同步服务器目录》 https://www.cnblogs.com/welcomer/p/5068287.html 安装与初始化 由于在目录同步时需要跨服务器通过ssh连接,因此不建议使用root用户,建议新建普通用户进行操作。 在两台或多台服务器之间同步,只需要在第一台服务器上安装Unison,再用scp连接将可执行的unison文件复制到第二台服务器上即可。 安装Unison 由于使用源码包安装Unison需要安装Ocaml依赖,且Unison默认将文件复制到“/用户名/bin/”目录下,会导致在make install步骤时提示错误,所以建议使用apt-get或yum安装。 Ubuntu下安装:在配置好阿里云的apt-get源之后,使用sudo apt-get install unison安装。 CentoOS下安装:使用yum install unison安装。 将Unison复制到服务器2 使用apt-get或yum安装Unison后,默认放在/usr/bin/unison。 1、使用ssh连接到远程主机: scp /usr/bin/unison root@服务器2的IP地址:/root/ 注意:在Ubuntu下,如果服务器没有安装openssh-server,则无法被其他服务器连接,解决方法: 使用sudo apt-get install openssh-server安装 在/etc/ssh/sshd_config文件中,把将PermitRootLogin prohibie-password 修改为:PermitRootLogin yes 重启ssh服务即可使用。 2、登录服务器2,使用复制命令,将可执行文件unison从/root/移到/usr/bin/下。 cp /root/unison /usr/bin/ 3、在两台服务器上都输入unison –version,查看是否安装成功。如果返回了版本号,则安装成功。...

February 22, 2020 · 2 min · JohnathanLin

Java实现类似WINSCP访问远程Linux服务器,执行命令、上传文件、下载文件

pom.xml添加的依赖: <!-- https://mvnrepository.com/artifact/ch.ethz.ganymed/ganymed-ssh2 --> <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-ssh2</artifactId> <version>262</version> </dependency> 这里注意,不同版本的这玩意用法有差别。这里我使用的是262。 操作类代码如下: import ch.ethz.ssh2.*; import java.io.*; /** * @Author: 风萧古道的博客 windypath.com * @Date: 2019/11/29 15:14 */ public class SSHUtil { // uploadFile to Linux /** * 上传文件到Linux * * @param ip ip地址 * @param username 登录用户名 * @param password 密码 * @param remoteFilePath 目标文件所在完整目录 * @param file 本地文件File对象 * @return */ public static boolean uploadFile(String ip, String username, String password, String remoteFilePath, File file) { FileInputStream input = null; BufferedOutputStream boutput = null; Connection conn = null; try { conn = new Connection(ip); conn....

February 20, 2020 · 3 min · JohnathanLin

一个被废弃的项目——自动爬取信息然后发给我自己邮箱上

这是一个python项目。 使用到的技术包括爬虫和发邮件 代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2020/2/5 22:49 # @Author : Johnathan Lin import time import requests import random import json import re from bs4 import BeautifulSoup import smtplib from email.mime.text import MIMEText from email.header import Header from urllib.parse import urljoin from bs4.element import NavigableString # 第三方 SMTP 服务 mail_host = "smtp.163.com" # 设置服务器 mail_user = "你的邮箱" # 用户名 mail_pass = "你的密码" # 口令 # 发送人和接收人 sender = '你的邮箱' # 自己发给自己就可以了, receivers = ['你的邮箱'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱 # 爬虫请求头 headers = { 'User-Agent': 'Mozilla/5....

February 9, 2020 · 3 min · JohnathanLin

Python连接MongoDB和Oracle实战

Python连接MongoDB 安装 首先要安装pymongo,用pip装一下就好了。 工具类python文件 以下直接给出我写的mongodb操作类 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/12/23 14:02 # @Author : Johnathan Lin 林佳庆 """ 数据导入Mongo模块 """ import os import pymongo from utils.configReader import read_mongo_config # 设置编码 os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8' def get_mongodb_collection(collection): """ 根据配置文件和数据库和表得到表(collection) :param database: 数据库 :param collection: 表 :return: 表的对象 """ mongo_config = read_mongo_config() client = pymongo.MongoClient(mongo_config['client']) db = client[mongo_config['database']] if mongo_config['auth'] == 'True' or mongo_config['auth'] == 'true': db....

February 9, 2020 · 2 min · JohnathanLin

vue和springboot项目部署到Linux服务器

写在前面的话 前后端分离的项目中,需要分别部署前端与后端项目。前端项目使用npm打包,将得到的dist文件夹下的内容上传到服务器后,用nginx的alias指向文件夹即可访问,而后端项目使用maven打包,需使用tomcat在后台启动,再通过nginx转发,供前端项目调用。 打包 前端的打包 前端项目使用的是vue-element-admin的基础版本:vue-admin-template 根据教程从github上下载后,在webstorm中运行成功。 原项目中只有前端,但可以完成简单的数据交互,根据使用手册介绍,该项目使用了mockjs模拟数据。 而我们需要做前后端交互,故不使用mockjs。 修改为访问后端的路径 方法很简单,在根目录下的.env.development文件下,将VUE_APP_BASE_API改为你的本地后端地址。 .env.development VUE_APP_BASE_API = 'http://localhost:8080' 在根目录下的.env.production文件下,将VUE_APP_BASE_API改为你的云服务器的后端地址。 .env.production # just a flag ENV = 'production' # base api VUE_APP_BASE_API = 'http://???????/springbootdemo' 这里可能会有一些小bug,主要是要与服务器的路径对应起来。 根据该项目package.json内所设置的,使用npm run build:prod打包,生成dist文件夹 最后得到dist文件夹。 后端的打包 编写接口 首先,编写Controller,写一些接口。 package com.windypath.demo.controller; import com.windypath.demo.response.ResponseData; import com.windypath.demo.response.ResponseDataUtil; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RequestMapping("/") @RestController public class MainController { @RequestMapping("/hello") public ResponseData hello() { return ResponseDataUtil.buildSuccess("hello!"); } @RequestMapping("/") public ResponseData root() { return ResponseDataUtil....

January 27, 2020 · 2 min · JohnathanLin