首页
Linux常用命令
docker常用命令
关于
Search
1
UNRAID增加和缩小虚拟机虚拟磁盘大小
22 阅读
2
docker安装MDCX
18 阅读
3
unraid添加iSCSI 发起程序
8 阅读
4
虚拟机OVA格式转换QCWO2&RAW
3 阅读
5
Ubuntu初始设置
3 阅读
默认分类
docker
容器安装
Linux
群辉
软路由
Unraid
PVE
Nginx
wow
杂项
图床
飞牛
登录
Search
标签搜索
nginx
unraid
PVE
wow服务器
装机硬件
宏
v2ray
直通
电视盒子
相册
黑裙7.0.1
远程穿透
定时
ssh
emby
symlink
软链接
Linux
sftp
防火墙
奥黛丽·逐爱者
累计撰写
69
篇文章
累计收到
8
条评论
首页
栏目
默认分类
docker
容器安装
Linux
群辉
软路由
Unraid
PVE
Nginx
wow
杂项
图床
飞牛
页面
Linux常用命令
docker常用命令
关于
搜索到
69
篇与
奥黛丽·逐爱者
的结果
2024-05-14
AB目录同步问题
需求:从A目录复制数据到B目录,记录复制过的文件并生成详细日志,以后再次执行该脚本就算B目录下的文件被清空,已同步过的文件也不会再次复制。直接使用bat命令——失败Linux使用rsync——没成功问了ChatGPT要使用这个Python脚本在Windows上从A目录复制数据到B目录,并记录已复制的文件以避免重复复制,请按以下步骤操作:步骤一:安装Python如果你还没有安装Python,请先从Python官方网站下载并安装Python。步骤二:创建脚本文件1、打开一个文本编辑器(如Notepad、Notepad++或VSCode)。 2、将以下脚本代码复制并粘贴到文本编辑器中。import os import shutil import hashlib # 定义本地目录A和目标目录B local_dir = r"C:\path\to\local\A" target_dir = r"C:\path\to\target\B" log_file = "synced_files.log" def calculate_file_hash(file_path): """计算文件的SHA-256哈希值""" sha256_hash = hashlib.sha256() with open(file_path, "rb") as f: for byte_block in iter(lambda: f.read(4096), b""): sha256_hash.update(byte_block) return sha256_hash.hexdigest() def load_synced_files(log_file): """加载已同步的文件列表""" if os.path.exists(log_file): with open(log_file, "r") as f: return set(line.strip() for line in f) return set() def log_synced_files(log_file, files): """记录已同步的文件列表""" with open(log_file, "a") as f: for file in files: f.write(f"{file}\n") def sync_files(local_dir, target_dir, log_file): """同步文件到目标目录,并记录已同步的文件""" # 加载已同步文件的列表 synced_files = load_synced_files(log_file) # 获取本地目录中所有文件 all_files = set() for root, _, files in os.walk(local_dir): for file in files: full_path = os.path.join(root, file) relative_path = os.path.relpath(full_path, local_dir) file_hash = calculate_file_hash(full_path) all_files.add((relative_path, file_hash)) # 需要同步的文件 files_to_sync = {file for file in all_files if file[1] not in synced_files} # 如果没有需要同步的文件,直接返回 if not files_to_sync: print("没有新的文件需要同步。") return # 同步文件 for relative_path, file_hash in files_to_sync: source_file = os.path.join(local_dir, relative_path) target_file = os.path.join(target_dir, relative_path) target_dir_path = os.path.dirname(target_file) # 创建目标目录(如果不存在) os.makedirs(target_dir_path, exist_ok=True) # 复制文件 shutil.copy2(source_file, target_file) # 记录同步的文件 log_synced_files(log_file, [file_hash]) print(f"同步完成:{len(files_to_sync)} 个文件。") if __name__ == "__main__": sync_files(local_dir, target_dir, log_file)3、将此文件保存为sync_files.py(文件扩展名为.py)。步骤三:编辑脚本文件打开sync_files.py,编辑以下变量以匹配你的目录路径:local_dir = r"C:\path\to\local\A" # 替换为你的本地A目录路径 target_dir = r"C:\path\to\target\B" # 替换为你的目标B目录路径 log_file = "synced_files.log" # 日志文件的路径和名称步骤四:运行脚本1、打开命令提示符(可以通过按下Win + R,然后输入cmd并按回车键来打开)。 2、导航到包含sync_files.py文件的目录。例如,如果文件在桌面上,可以使用以下命令:cd C:\Users\YourName\Desktop3、运行脚本:python sync_files.py 结果脚本将从本地A目录复制文件到目标B目录,并记录已复制的文件的哈希值到synced_files.log。下次运行脚本时,它将跳过已记录的文件,避免重复复制,即使B目录中的文件被清空。注意事项确保你有足够的权限读取源目录和写入目标目录。如果脚本没有正确运行,检查目录路径是否正确,以及日志文件synced_files.log是否存在并具有写入权限。
2024年05月14日
1 阅读
0 评论
0 点赞
2024-05-09
Windows部署CwRsyncServer实现Linux下文件同步到WindowsServer服务器
场景描述需要将Linux服务器某个目录下的所有文件定期同步到WindowsServer2022服务器上在Windows Server 2022服务器上先安装部署cwRsyncServer1、下载CwRsyncServer V4.1.0 以管理员身份运行进行安装CwRsyncServer_V4.1.0_XiTongZhiJia.zip2、系统自动创建用户SvcCWRSYNC,无需修改用户名,修改好密码并记住,然后直接默认安装安装过程会给系统创建用户,让防护软件放行。3、呼出系统服务,属性-服务启动设置为自动-登入账号密码为刚刚安装时默认账号和修改的密码。我反复装了好几次,最后成功的一次是使用默认账号和修改的密码登入。所以觉得前几次的坑都是这里没有使用默认账号导致客户端连不上来。4、修改配置!!! C:\Program Files (x86)\ICW目录下修改rsyncd.confuid = 0 gid = 0 use chroot = false strict modes = false #这里↓如果只允许某一个机器访问的话,可以填写IP地址 hosts allow = * log file = rsyncd.log pid file = rsyncd.pid #端口↓默认是873 port = 873 #允许的最大连接数↓ max connections = 4 # Module definitions # Remember cygwin naming conventions : c:work becomes /cygwin/c/work # 模块↓ [backup] #路径↓这个是需要同步的文件位置,Windows目录的写法,应该按照POSIX风格来写, #默认配置文件的写法cygwin貌似不工作,而要写成cygdrive,如D:/data,要写成/cygdrive/d/data。 path = /cygdrive/c/ftp #只读或者读写↓read only = true 表示客户端只能下载服务端的文件而不能上传(单向同步).如果有上传需要,设置read only = false 即可. read only = false transfer logging = yes lock file = rsyncd.lock #下方↓secrets file密码文件中的用户名 auth users = cwrsync #密码文件存放的路径↓ secrets file = etc/cwrsync.passwd{card-describe title="配置详细描述"}这个 rsyncd.conf 文件是 rsync 守护进程的配置文件,用于定义 rsync 服务器的行为和模块。下面是对配置文件中各项设置的解析:uid = 0:这指定了 rsync 服务运行的用户的ID。在这里,0 是 root 用户的ID,意味着 rsync 服务将以 root 用户权限运行。gid = 0:这指定了 rsync 服务运行的组的ID。0 通常对应于 root 组。use chroot = false:这个设置禁用了 chroot 功能,chroot 是一种安全措施,可以将 rsync 进程限制在特定的目录结构中,防止它访问文件系统的其他部分。strict modes = false:这禁用了严格模式,允许 rsync 与具有不同权限的文件进行交互,而不会报错。hosts allow = *:这允许任何客户端连接到 rsync 服务器。在生产环境中,出于安全考虑,通常会指定特定的IP地址或IP范围。log file = rsyncd.log:这指定了 rsync 服务的日志文件名。pid file = rsyncd.pid:这指定了 rsync 服务的进程ID文件名,用于记录 rsync 服务的进程ID。port = 873:这指定了 rsync 服务监听的端口号,这里是 873。max connections = 4:这指定了 rsync 服务允许的最大连接数,这里是 4。接下来是模块定义部分:[backup]:这是模块的名称,客户端将使用这个名称来访问同步的内容。path = /cygdrive/c/ftp:这指定了模块的路径,即远程服务器上同步文件存放的目录。read only = false:这指定了模块不是只读的,客户端可以向该模块写入文件。transfer logging = yes:这指定了开启传输日志记录。lock file = rsyncd.lock:这指定了 rsync 服务使用的锁文件,用于同步过程中的并发控制。auth users = cwrsync:这指定了允许认证并使用该模块的用户列表,这里是 cwrsync 用户。secrets file = etc/cwrsync.passwd:这指定了包含用户认证信息的密码文件,这里是 /etc/cwrsync.passwd 文件。综上所述,这个配置文件定义了一个 rsync 服务器,允许用户 cwrsync 通过端口 873 访问 backup 模块,并且可以进行读写操作。服务器将记录所有传输活动到 rsyncd.log 文件,并且会使用 rsyncd.pid 文件记录进程ID。同时,服务器将使用 /etc/cwrsync.passwd 文件来验证连接的用户。{/card-describe}uid = 0 gid = 0 记得加上,解决@ERROR: invalid gid nobody报错问题5、在 C:\Program Files (x86)\ICW\etc 目录下创建cwrsync.passwd密码文件cwrsync:123456还要设置好权限6、添加cwRsyncServer 873端口的入站防火墙规则 放通入方向的873端口7、然后启动RsyncServer服务Linux端部署rsync客户端并测试Linux端的rsync部署就百度吧。一般默认都会带吧~同步命令:#linux>windows rsync --progress -avz --delete /home/ixjkj/sync* cwrsync@192.168.0.111::backup #windows>linux rsync --progress -avz --delete cwrsync@192.168.0.111::backup /home/ixjkj/sync*{card-describe title="同步命令详细描述"}这条 rsync 命令用于同步本地目录 /home/ixjkj/sync 下的文件到远程服务器上的 backup 模块。下面是命令的详细解析:rsync:是命令的名称,用于文件同步和传输。--progress:显示文件传输过程中的进度信息。-a(archive):归档模式,该选项通常用于备份,它会保留文件的权限、时间戳、软硬链接以及文件模式。-v(verbose):详细模式,增加输出的详细程度,可以显示处理的文件信息。-z(compress):压缩模式,在传输过程中压缩数据,以加快传输速度,节省带宽。--delete:在同步完成后,删除目标位置中本地不存在的文件,使得源和目标目录保持完全一致。/home/ixjkj/sync*:指定本地同步的文件或目录,星号(*)是一个通配符,匹配所有的文件和目录。cwrsync@192.168.0.111:指定远程服务器的用户名和地址。在这个例子中,用户名是 cwrsync,服务器的IP地址是 192.168.0.111。::backup:指定远程服务器上的模块名。rsync 支持模块化配置,backup 是在远程服务器的 rsync 配置文件中定义的一个模块。综上所述,该命令的作用是:从本地的 /home/ixjkj/sync 目录同步所有文件和子目录到远程服务器(192.168.0.111)上定义的 backup 模块。传输过程中显示进度,并且提供详细的输出。数据在传输时会被压缩。归档模式确保同步时保留原始文件的所有属性。同步后,远程服务器上 backup 模块中本地不存在的文件将被删除。在执行此命令之前,需要确保:远程服务器上已经配置了 rsync 服务,并且 backup 模块已经定义在 rsyncd.conf 文件中。本地用户具有访问远程服务器的权限,并且知道正确的用户名和密码或拥有相应的私钥进行认证。端口22(SSH默认端口)在服务器上是开放的,除非 rsync 服务配置了使用其他端口。注意:在实际使用中,根据具体环境和需求,可能需要对命令进行调整。{/card-describe}编写脚本,利用crontab实现定时同步1、新建和编辑一个cwrsync.sh文件nano /home/ixjkj/cwrsync.sh填入后保存#!/bin/bash rsync --progress -avz --delete cwrsync@192.168.0.111::backup /home/ixjkj/sync* >/dev/null 2>&1给执行权限chmod 755 /home/ixjkj/cwrsync.sh2、利用crontab实现定时同步crontab定义* * * * * - - - - - | | | | | | | | | +----- 星期中星期几 (0 - 6) (星期天 为0) | | | +---------- 月份 (1 - 12) | | +--------------- 一个月中的第几天 (1 - 31) | +-------------------- 小时 (0 - 23) +------------------------- 分钟 (0 - 59)crontab -e #例如每5钟同步一次 */5 * * * * /home/ixjkj/cwrsync.sh crontab -l查看服务端日志,5分钟一次linux中重启rsync服务使用root用户或具有sudo权限的用户登录到Linux系统。 打开终端或命令行界面。 停止rsync服务:sudo systemctl stop rsync.service 等待一段时间,确保rsync服务已停止。 启动rsync服务:sudo systemctl start rsync.service 检查rsync服务是否已经启动:sudo systemctl status rsync.service按参考 部署CwRsyncServer实现Linux下文件同步到WindowsServer服务器 rsync,从零开始Nas备份 {collapse}{collapse-item label="Linux客户端传到Windows服务端" open}rsync --progress -avz --delete --itemize-changes --log-file=/var/log/rsynclog/rsync.log --log-file-format='%t %f %b' /home/ixjkj/sync cwrsync@192.168.0.111::backup这条 rsync 命令用于将本地的 /home/ixjkj/sync 目录同步到远程服务器上的 backup 模块,并且包含了一些控制日志记录和同步行为的选项。下面是对命令中每个参数的解释:rsync:命令的名称,用于文件同步和传输。--progress:显示文件传输进度。-avz:-a:归档模式,递归地复制文件并保持大部分文件属性,如权限、时间戳、软硬链接等。-v:详细模式,提供更详细的输出。-z:压缩模式,在传输过程中压缩数据,以加快传输速度。--delete:在同步后删除远程 backup 模块中本地 /home/ixjkj/sync 目录不存在的文件。--itemize-changes:为所有更新显示变化摘要。--log-file=/var/log/rsynclog/rsync.log:将 rsync 的日志输出到指定的 /var/log/rsynclog/rsync.log 文件。--log-file-format='%t %f %b':为日志文件指定格式,其中 %t 表示时间戳,%f 表示文件名,%b 表示文件大小(以字节为单位)。/home/ixjkj/sync:本地的源目录,即该目录将被同步到远程的 backup 模块。cwrsync@192.168.0.111::backup:指定远程服务器的用户名 cwrsync,IP 地址 192.168.0.111,以及 rsync 守护进程上配置的模块名 backup。综上所述,该命令的作用是:将本地的 /home/ixjkj/sync 目录同步到远程服务器(192.168.0.111)上的 backup 模块。显示文件传输的进度。同步时保持文件的权限、时间戳和链接,并进行数据压缩。同步结束后,删除远程模块中本地不存在的文件。记录所有变化的详细摘要到日志文件。使用指定的格式将日志信息记录到 /var/log/rsynclog/rsync.log。在执行该命令之前,请确保:远程服务器的 rsync 服务已经配置了 backup 模块,并且正在运行。用户 cwrsync 有权限访问远程服务器上的 backup 模块。本地用户有权限读取 /home/ixjkj/sync 目录的内容,以及写入 /var/log/rsynclog/ 目录(如果该目录不存在,需要先创建它)。确保网络连接稳定,以避免因超时导致同步中断。注意:命令中的 --progress 选项在某些 rsync 版本中可能已被 --progress 替代,但两者在功能上是等效的。{/collapse-item}{/collapse}
2024年05月09日
0 阅读
0 评论
0 点赞
2024-04-28
银河麒麟服务器操作系统 V10 SP1 防火墙(firewalld)指令
一、Kylin系统查看firewalld状态systemctl status firewalld(或者:systemctl status firewalld.service,或者:systemctl is-active firewalld)Active: inactive (dead) 显示不活动/关闭二、开启、重启、关闭firewalld服务1、开启:systemctl start firewalld查看状态systemctl status firewalldactive(running):表示防火墙已经开启。2、关闭:systemctl stop firewalld查看状态systemctl status firewalld3、重启:systemctl restart firewalld查看状态systemctl status firewalld查询、开放、关闭firewalld端口1、查询全部已开放的端口:firewall-cmd --list-all2、查询某个端口是否开放:firewall-cmd --query-port=[端口]/tcp #yes表示已经开放,no表示没有开放。 [root@iZon201ihvpnoi2e3ftkphZ ~]# firewall-cmd --query-port=22/tcp no3、开放端口:firewall-cmd --permanent --add-port=[端口]/tcp #succes表示开方端口成功如果开放已经开放的端口会报错如下图:防火墙临时放行端口:firewall-cmd --add-port=8080/tcp4、关闭端口:firewall-cmd --permanent --remove-port=[端口]/tcp #success表示关闭成功。 [root@iZon201ihvpnoi2e3ftkphZ ~]# firewall-cmd --permanent --remove-port=18880/tcp success5、刷新服务(开放、关闭端口操作后需要刷新才能生效):firewall-cmd --reload #success表示刷新成功。设置、取消开机启动(firewalld)1、开机启动防火墙firewalld:systemctl enable firewalld2、开机关闭防火墙firewalld:systemctl disable firewalld3、查询是否开机启动firewalld:systemctl is-enabled firewalld #(enabled表示开机启动防火墙,disabled表示开机关闭防火墙)
2024年04月28日
0 阅读
0 评论
0 点赞
2024-04-26
docker安装mysql
{tabs}{tabs-pane label="mysql"}docker安装docker run -d -p 3306:3306 --privileged=true \ -v /mnt/user/appdata/mysql/log:/var/log/mysql \ -v /mnt/user/appdata/mysql/data:/var/lib/mysql \ -v /mnt/user/appdata/mysql/conf:/etc/mysql/conf.d \ -e MYSQL_ROOT_PASSWORD=root \ --name mysql \ library/mysql:5.7{collapse}{collapse-item label="好像有误" open}docker run -d --restart=always --name 此处写名字 --network cloud --ip 此处写IP -p 3306:3306 -v /此处写安装路径:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=此处写密码 -d mysql:latest{/collapse-item}{/collapse}登到数据库docker exec -it mysql mysql -u root -p执行Mysql老五条初始化命令create database 此处写数据库名字; CREATE USER 此处写数据库用户名 IDENTIFIED BY '此处写数据库密码'; grant all on 此处写数据库名字.* to '此处写数据库用户名'@'%'; ALTER USER 此处写数据库用户名 IDENTIFIED WITH mysql_native_password BY '此处写数据库密码'; FLUSH PRIVILEGES;{/tabs-pane}{/tabs}
2024年04月26日
0 阅读
0 评论
0 点赞
2024-04-23
Linux下使用Shell脚本实现FTP自动上传和下载文件
{tabs}{tabs-pane label="1、安装lftp"}离线安装lftp包名:lftp-4.9.2.tar.gz1.上传至服务器,路径是:/tmp/lftp/2.进到文件夹目录下:cd /tmp/lftp/3.解压:tar -zvf lftp-4.9.2.tar.gz 4.进入解压后的目录:cd lftp-4.9.2/5.执行安装命令./configure --prefix="/usr/local/lftp-4.9.2/usr/local" make make install6.检查是否安装正确:进入到 /usr/local/lftp-4.9.2/usr/local/ 目录下,可以看到 bin,etc,lib,share四个文件夹,进到bin下面有两个程序,lftp和lftpget7.添加环境变量:sudo nano ~/.bashrc #或者 sudo nano /etc/profile #添加 export PATH=/usr/local/lftp-4.9.2/usr/local/bin/:$PATH 8.使其生效source ~/.bashrc #或者 source /etc/profile安装OK小知识:/etc/profile,/etc/bashrc #是系统全局环境变量设定; ~/.profile,~/.bashrc #是用户家目录下的私有环境变量设定。延伸了解:《 Linux文件 profile、bashrc、bash_profile区别 》{/tabs-pane}{tabs-pane label="2、建立脚本"}建立上传/下载脚本从本地向FTP批量上传文件新建sh:nano /home/ixjkj/sftpup.sh填写信息:#!/bin/sh ftp -v -n 192.168.0.211<<EOF user root Uroot binary hash cd /mnt/user/downloads/webdav #服务端路径 lcd /home/ixjkj/ruanjian #本地路径 prompt mput * # mput是上传 mget是下载 bye #here document EOF echo "commit to ftp successfully"ctrl+x退出,回答按y,再按回车保存。给权限chmod +x sftpup.sh试着跑一下./sftpup.sh脚本OK{/tabs-pane}{tabs-pane label="3、定时执行"}定时执行任务1.执行命令:crontab -e2.按 i 编辑文件,添加命令如下:10 12 * * * sh /home/ixjkj/sftpup.sh10 12 * * * 指每天12点10分开始执行该定时任务(具体时间用法可以参考其他资料)crontab定义* * * * * - - - - - | | | | | | | | | +----- 星期中星期几 (0 - 6) (星期天 为0) | | | +---------- 月份 (1 - 12) | | +--------------- 一个月中的第几天 (1 - 31) | +-------------------- 小时 (0 - 23) +------------------------- 分钟 (0 - 59)sh /home/ixjkj/sftpup.sh 指执行 home目录下的脚本 sftpup.sh 3.按ESC返回命令行模式,再按:wq保存并退出定时OK。{callout color="#f0ad4e"}很多其他文章写的很详细,但都是最关键的第2部分命令出错,写那么多又有什么用,基本上写的是 10 12 * /home/uploadFile.sh,没有写 sh,这样的话,脚本根本不会执行啊。所以完整的语法分两部分,前半部分是时间定义,后半部分是命令,平时怎么执行命令的,这个地方就怎么写{/callout}{/tabs-pane}{/tabs}
2024年04月23日
0 阅读
0 评论
0 点赞
1
...
4
5
6
...
14