MSYS2 环境搭建 && rsync 使用
Posted 一剑九州寒的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MSYS2 环境搭建 && rsync 使用相关的知识,希望对你有一定的参考价值。
前言
最近家中部署了 NAS ,但是数据只保存在 NAS 中总感觉不是很安全,所以希望有备份的手段,将 NAS 上的数据备份到移动硬盘中冷备份。
由于 Windows 下没找到开源好用的文件同步软件,微软之前维护的 SyncToy 似乎也不再维护,那么只能使用 Linux 环境下的 rsync
比较好了。
考虑到在使用 Git for Windows 时可以运行一些 bash 脚本和 Linux 命令,所以笔者尝试是否可以在 Git for Windows 中搭建 rsync
环境,笔者尝试成功了,但是发现一旦 Git 升级或者重装,环境也需要重新搭建,故放弃此方案。
最终笔者使用 MSYS2 环境,Git for Windows 的运行环境就是基于 MSYS2。
MSYS2 安装
安装
前往 MSYS2 官网下载安装包安装即可,如果遇到 Disabled 4 keys. ==> Updating trust database...
卡主的情况,断网稍等片刻即可安装成功。
Windows Terminal 配置
Windows Terminal 里加上如下配置即可,guid
是随机生成的。
"commandline": "D:/Develop/msys64/msys2_shell.cmd -defterm -no-start -use-full-path -here -mingw64",
"guid" : "f319d32a-e777-4b93-ad5b-499d586db3ff",
"hidden": false,
"icon": "D:/Develop/msys64/msys2.ico",
"name" : "MSYS2",
"startingDirectory" : "%USERPROFILE%"
rsync
安装
安装
其实这里比较简单,一行命令搞定
pacman -S rysnc
使用
https://share.bito.co/static/share?aid=92205e9e-6ec5-4aa7-aa26-ec17d72b9d4c
https://share.bito.co/static/share?aid=5acfcb64-290e-4019-9181-b2d88807abd5
rsync -avn --progress /path/to/source/folder/ /path/to/target/folder/
rsync
是一款常用的文件同步工具,它有很多参数可以进行自定义,以下是一些常用的参数:
-a
:归档模式,表示以递归方式、保留所有文件属性(如权限、日期时间戳等)、保留符号链接、保持文件的所有者和组的身份(如果可能)、递归复制目录。一般情况下使用 -a 参数就可以满足大部分同步需求。-r
:递归复制目录。-v
:详细模式,输出操作过程中的详细信息。-z
:压缩数据传输。-n
:模拟运行,显示将要进行的操作,但不会真正执行。--delete
:在同步目标目录之前删除目标目录中不存在于源目录中的文件。--exclude
:排除指定的文件、目录及其子目录不进行同步,可以使用通配符指定要排除的内容。--include
:仅同步指定的文件、目录及其子目录,可以使用通配符指定要包含的内容。--progress
:显示同步进度。--bwlimit
:限制带宽占用,以 KB/s 为单位指定限制带宽的值。--dry-run
:测试运行,不进行实际的文件同步操作。
这些参数的具体用法和含义可以在rsync
命令的man
手册中查看。
参考&引用
MSYS2开发环境搭建(无幻的博客,编译OpenSSL,可使用pacman升级)
MSYS2开发环境搭建
软件安装
下载msys2-x86_64软件包,双击安装到某根目录下,比如D:\\msys64。
pacman是MSYS2自带的软件管理工具:
- 可通过修改msys64\\etc\\pacman.d下的三个文件修改软件源,可供选择的有:中国科学技术开源软件镜像、北京理工大学镜像、日本北陆先端科学技术大学院大学SourceForge镜像、The UK Mirror Service Sorceforge mirror等。
- 下载后的软件包默认存放目录msys64\\var\\cache\\pacman\\pkg;若命令行下载速度较慢,可以到到软件源网站使用下载工具下载相应的软件包,然后拷贝到此目录,接着使用命令行进行安装。
- 运行msys2_shell.bat:
pacman -Sy
更新本地包数据 - 升级核心包:
pacman -S --needed filesystem msys2-runtime bash libreadline libiconv libarchive libgpgme libcurl pacman ncurses libintl
, 之后需要关闭所有 MSYS2 shell,然后运行 autorebase.bat - 升级其他包:
pacman -Su
- 常用命令:
pacman -Q
查看已安装的软件包pacman -S -g
查看软件组pacman -Q -g base-devel
查看软件组包含的软件pacman -Q -l vim
查询软件包的内容pacman -Q -s nettle
查询软件所在的包
- 查看工具帮助:
pacman -h
;pacman -S -h
-
建议通过安装软件组来安装工具链
pacman -S mingw-w64-x86_64-toolchain pacman -S mingw-w64-i686-toolchain pacman -S base-devel pacman -S vim
MSYS2应用说明
运行环境说明
-
msys64\\etc\\fstab中可以配置文件目录映射:比如配置
C:\\Users\\lenovo\\Desktop /desktop
后,可以在终端直接cd /desktop
后可以直接切换到C:\\Users\\lenovo\\Desktop目录下。 -
任务栏快捷键:msys64\\usr\\bin\\mintty.exe拖拽到任务栏上,右击选择属性,将目标改成三种BAT脚本中的一个。
-
vim高亮配置:将msys64\\etc\\skel.vimrc拷贝到用户目录下。
-
MSYS2有三个执行脚本,分别是 msys2_shell.bat、mingw32_shell.bat 和 mingw64_shell.bat,查看内容可以看到其中只有一行区别,即是设定 MSYSTEM 变量。这个变量在 /etc/profile 中会用到:
MSYS2_PATH="/usr/local/bin:/usr/bin:/bin" MANPATH="/usr/local/man:/usr/share/man:/usr/man:/share/man:${MANPATH}" INFOPATH="/usr/local/info:/usr/share/info:/usr/info:/share/info:${INFOPATH}" MINGW_MOUNT_POINT= if [ -n "$MSYSTEM" ] then case "$MSYSTEM" in MINGW32) MINGW_MOUNT_POINT=/mingw32 PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}:${PATH}" PKG_CONFIG_PATH="${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT}/share/pkgconfig" ACLOCAL_PATH="${MINGW_MOUNT_POINT}/share/aclocal:/usr/share/aclocal" MANPATH="${MINGW_MOUNT_POINT}/share/man:${MANPATH}" ;; MINGW64) MINGW_MOUNT_POINT=/mingw64 PATH="${MINGW_MOUNT_POINT}/bin:${MSYS2_PATH}:${PATH}" PKG_CONFIG_PATH="${MINGW_MOUNT_POINT}/lib/pkgconfig:${MINGW_MOUNT_POINT}/share/pkgconfig" ACLOCAL_PATH="${MINGW_MOUNT_POINT}/share/aclocal:/usr/share/aclocal" MANPATH="${MINGW_MOUNT_POINT}/share/man:${MANPATH}" ;; MSYS) PATH="${MSYS2_PATH}:/opt/bin:${PATH}" PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig:/lib/pkgconfig" ;; *) PATH="${MSYS2_PATH}:${PATH}" ;; esac else PATH="${MSYS2_PATH}:${PATH}" Fi
-
可见,三个 .bat 的区别就是 PATH 的设置,mingw32_shell.bat 优先使用 msys64/mingw32 下的工具,mingw64_shell.bat 优先使用msys64/mingw64 下的工具,而 msys2_shell.bat 两个都不使用,只用自身 msys 的工具。这么做的好处是当需要编译 32bit Target 的项目时使用 mingw32_shell.bat,64 bit 使用 mingw64_shell.bat,各套工具互不干扰。
制作软件包makepkg
MSYS2官网的软件包是通过makepkg或makepkg-mingw制作的。
可参
MINGW_INSTALLS=mingw64 makepkg -sLf --skippgpcheck
- http://sourceforge.net/p/msys2/wiki/Contributing%20to%20MSYS2/,
- C:\\msys64\\usr\\share\\pacman\\PKGBUILD.proto
常用软件包编译
常用软件包我们可以简单的使用命令直接从官网安装即可,比如安装openssl:
- 32bit:
pacman -S mingw-w64-i686-openssl
- 64bit:
pacman -S mingw-w64-x86_64-openssl
有时候根据项目需要我们不得不自己动手编译依赖的软件包,以下是我在工作用到的库编译过程记录。
openssl
-
64bit
mkdir openssl64 cd openssl64 tar zxvf openssl-1.0.2c.tar.gz cd openssl-1.0.2c ./configure mingw64 shared make make INSTALL_PREFIX=../ install
-
32bit
mkdir openssl32 cd openssl32 tar zxvf openssl-1.0.2c.tar.gz cd openssl-1.0.2c ./configure mingw shared make make INSTALL_PREFIX=../ install
zlib
- 32bit
mkdir zlib32
cd zlib32
tar zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8/
make -f ./win32/Makefile.gcc
make
make install -f win32/Makefile.gcc DESTDIR=../
参考
http://blog.csdn.net/callinglove/article/details/48601775
http://blog.csdn.net/callinglove/article/details/48601775
以上是关于MSYS2 环境搭建 && rsync 使用的主要内容,如果未能解决你的问题,请参考以下文章