有很多关于简单的 SSH 密钥副本的教程,但没有一个会检查密钥是否远程存在。这应该有效:
cat ~/.ssh/id_rsa.pub | ssh -p <port> <user>@<hostname> 'sh -c "if ( ! grep -q '`cat -`' ~/.ssh/authorized_keys); then cat - >>~/.ssh/authorized_keys; fi"'
Run Code Online (Sandbox Code Playgroud)
cat -grep的内部不会被插入到单个字符串中,而是被插入到 3 中,这将整个事情都搞砸了。我在 Ruby 中做了它并且它有效,但它并不理想。有 bash 专家吗?
Net::SSH.start(<host>, <username>, :password => <password>, :port => <port>) do |ssh|
local_public_key = `cat ~/.ssh/id_rsa.pub`.chomp
ssh.exec! %{
if ( ! grep -q '#{local_public_key}' ~/.ssh/authorized_keys ); then echo '#{local_public_key}' >> ~/.ssh/authorized_keys; fi
}
Run Code Online (Sandbox Code Playgroud) 我在 Ubuntu 10.04.03、3 个设备、64k 块下设置了原始软件 RAID 5。性能是可以接受的:
# 4GB write
dd if=/dev/zero of=ddfile.big bs=1MB count=4k
4095290816 bytes (4.1 GB) copied, 51.743 s, 79.1 MB/s
# 4GB read
dd if=ddfile.big of=/dev/null
4095290816 bytes (4.1 GB) copied, 62.5932 s, 65.4 MB/s
Run Code Online (Sandbox Code Playgroud)
然后我去了一个带有 3 个设备的软件 RAID 6(2 个被标记为丢失,需要从它们中复制数据),128k 块。我还在新阵列上设置了 LVM。性能差得令人震惊:
# 4GB write
dd if=/dev/zero of=ddfile.big bs=1MB count=4k
4096000000 bytes (4.1 GB) copied, 106.406 s, 38.5 MB/s
# 4GB read
dd if=ddfile.big of=/dev/null
4096000000 bytes (4.1 GB) copied, 129.317 s, 31.7 MB/s
Run Code Online (Sandbox Code Playgroud)
我试图了解是什么使这些读写速度减慢了一半。会不会是LVM?还是新raid阵列的退化状态?或者可能是块大小差异(64k …