我试图~/.bash_history
在终端会话中搜索我最近的命令,但它们并不存在。我想这是因为我打开了多个终端会话。
有没有一种方法可以将当前终端会话的命令历史同步(即同步推送或同步写出)到 bash_history 文件中(不关闭会话并丢失该环境)?
(它与sync
命令如何在某些系统上存储文件系统修改的想法非常相似。)
我想我可以设置 bash 来保留多个会话历史记录,但是当您在一台新机器上工作并且您不小心忘记按照您可能想要的方式设置 bash 时,推送当前历史记录缓冲区的能力仍然很有用.
我有:
我通过 SSH 在 IP 203.0.113.0 端口 1234 上连接的 Linux 服务器
一台家用电脑(在路由器后面),公共 IP 198.51.100.17,是 Debian 或 Windows+Cygwin
让文件夹/home/inprogress/
同步(双向)最简单的方法是什么,有点像rsync
,但是使用文件系统观察器,以便每次修改文件时,它都会立即复制到另一侧?(即无需手动调用同步程序)
我正在寻找命令行/无 GUI 解决方案,因为服务器是无头的。
是否有 Linux/Debian 内置解决方案?
有没有办法只同步一个分区而不是所有分区?
类似于“同步/dev/sdc1”。
最近我需要删除大量文件(超过 100 万个),我读到这样做:
rsync -av --delete `mktemp -d`/ ~/source && rmdir ~/source
Run Code Online (Sandbox Code Playgroud)
是最优化的方法之一,我可以保证它比rm -rf
.
我不是这方面的专家,但根据我的理解,rsync 性能的原因与它列出文件的方式有关(我想是 LIFO 而不是 FIFO)。现在,问题是,我还需要以有效的方式移动大量文件。经过一番搜索,我发现了这个:
rsync -av --ignore-existing --remove-source-files ~/source ~/destination
Run Code Online (Sandbox Code Playgroud)
虽然这会删除所有移动的文件中~/source
,该目录留在那里。由于我有一个类似“循环”的目录结构,数量files/directories
非常接近 1,所以我不得不再次运行第一个命令以完全摆脱目录:
rsync -av --ignore-existing --remove-source-files ~/source ~/destination && \
rsync -av --delete `mktemp -d`/ ~/source && rmdir ~/source
Run Code Online (Sandbox Code Playgroud)
直线mv
几乎会立即完成,但我的~/destination
目录中有应该保留的文件,所以mv
不是一个选项。我找到了--prune-empty-dirs
和--force
rsync 选项,但似乎都没有像我期望的那样工作:
--force force deletion of directories even if not empty
--prune-empty-dirs prune empty directory chains from the …
Run Code Online (Sandbox Code Playgroud) 我有几台不同的 linux 机器,每台机器上都有很多配置文件(和文件夹)。
例如:
~/.ssh/config
~/.config/openbox/rc.xml
~/.config/openbox/autostart.sh
~/.scripts/ ( folder )
~/.bashrc
...etc
Run Code Online (Sandbox Code Playgroud)
有没有一种简单而优雅的方法可以让这些文件在我的机器之间同步(一台没有互联网访问权限)?
此外,某些文件将需要更高级的同步过程,因为它们必须略有不同......例如:
我的台式机键盘有一系列热键,而我的笔记本电脑几乎没有。我XF86Mail
过去常常在桌面上打开 Thunderbird,但在笔记本电脑上打开Meta+ M。
我的家庭桌面和工作桌面都更面向“多用户”,而我的笔记本电脑只适合我。所以在我的笔记本电脑上,我倾向于将 openbox 的“rc.xml”文件保存在 at/etc/xdg/openbox/rc.xml
但在台式机上~/.config/openbox/rc.xml
有没有一种简单的方法可以通过 HTTP 使文件夹与目录列表保持同步?
编辑:
感谢 wget 的提示!我创建了一个 shell 脚本并将其添加为 cron 作业:
remote_dirs=( "http://example.com/" "…") # Add your remote HTTP directories here
local_dirs=( "~/examplecom" "…")
for (( i = 0 ; i < ${#local_dirs[@]} ; i++ )) do
cd "${local_dirs[$i]}"
wget -r -l1 --no-parent -A "*.pdf" -nd -nc ${remote_dirs[$i]}
done
# Explanation:
# -r to download recursively
# -l1 to include only one directory depth
# --no-parent to exclude parent directories
# -A "*.pdf" to accept only .pdf files
# …
Run Code Online (Sandbox Code Playgroud) 如果机器 A 和机器 B 共享一个先前通过 同步的目录rsync
,并且 A 更改了一个文件,而 B 更改了同一个文件,而您rsync
从 A 到 B 呢?
它可能类似于 中的合并冲突git
吗?
冲突能轻易解决吗?
我有一个文件夹,里面有几个文件,还有一些网络服务器上的空间。我想在 linux 中的本地文件夹和远程文件夹之间进行双向同步,只是在修改时间。我该怎么做呢?顺便说一句,我无法在服务器上安装任何东西,出于所有意图和目的,它只是空间。
注意:我已经设置了 rsa 密钥对,因此它可以静默发生。
我相当随机地检查了我的 RAID 阵列的状态cat/proc/mdstat
并意识到,我的一个阵列似乎正在重新同步:
md1 : active raid1 sdb7[1] sdc7[0]
238340224 blocks [2/2] [UU]
[==========>..........] resync = 52.2% (124602368/238340224) finish=75.0min speed=25258K/sec
Run Code Online (Sandbox Code Playgroud)
这是为什么?它是什么意思?我似乎可以通过权限访问挂载点r/w
。
编辑 1(响应SLM 的 ANSWER)
如果我grep
通过dmesg
,我真的看不到任何东西,而且--detail
开关也没有告诉我太多信息,即它显示重新同步正在进行中......但没有提示原因或可能不同步的原因.. . - 我想我可能只需要在开始更换硬件之前密切关注它。
如果我使用远程主机 (ssh://) 作为源/目标运行 rsync 或使用本地路径通过 sshfs 共享挂载目录有什么区别吗?
在不使用任何开关的情况下,安全性或复制速度是否存在差异,只需使用 rsync 存档模式和远程主机路径 (ssh)。与 sshfs 相同,仅使用源和目标挂载(没有密码更改,只是默认值)。
synchronization ×10
rsync ×4
bash ×2
filesystems ×2
block-device ×1
buffer ×1
cache ×1
files ×1
http ×1
mdadm ×1
networking ×1
rm ×1
sshfs ×1