首先,如果我复制了已经存在的问题,我想道歉,但是这一点太重要了。
我的linux服务器上有两个目录:
- /tmp
/ tmp作为来源
- /var
作为目的地
/var
目录中已有500个txt文件,我想将所有文件从/tmp
目录(约200个文件)移到/var
目录,并替换那些已经存在但名称相同但不触及那些不在/tmp
中的那些。
实际例子:
/var
个文件:a.txt,b.txt,c.txt,d.txt
/tmp
个文件:a.txt,b.txt
结果:/var
个文件:a.txt(来自/tmp
),b.txt(来自/tmp
),c.txt,d.txt
不确定mv
是否是一种正确的方法,所以提前谢谢你们! :)
答案 0 :(得分:2)
这可以通过rsync
有关详细信息,请参阅rsync manual。
Local: rsync [OPTION...] SRC... [DEST]
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
对于您的情况,
rsync -avzh /tmp/ /var/
如果你想测试它
rsync -avzh --dry-run /tmp/ /var/
-a, --archive archive mode;
-v, --verbose increase verbosity
-z, --compress compress file data during the transfer
-h, --human-readable output numbers in a human-readable format
详细评论
-v, - verbose此选项可增加传输过程中提供的信息量。默认情况下,rsync以静默方式工作。单身 -v将为您提供有关正在传输的文件的信息以及最后的简要摘要。两个-v选项会给你 有关哪些文件被跳过的信息以及更多信息 最后的信息。应该只使用两个以上的-v选项 如果你正在调试rsync。注意转移的名称 输出的文件使用默认的--out-format格式完成 lq%n%Lrq,它只告诉您文件的名称,以及项目的名称 是一个链接,它指向的地方。在单级-v级别的冗长,这个 没有提到文件何时更改其属性。如果你问 对于已更改属性的逐项列表(--itemize-changes 或者将lq%irq添加到--out-format设置),输出(在 客户端)增加以提及以任何方式更改的所有项目。 有关详细信息,请参阅--out-format选项。
-a, - archive这相当于-rlptgoD。这是一种快速的方式,说你想要递归,并希望保留几乎所有东西(用 -H是一个值得注意的遗漏)。上述等价的唯一例外是指定了--files-from,在这种情况下-r不是 默示。请注意,-a不保留硬链接,因为查找 多重链接文件很昂贵。您必须单独指定-H。 --no-OPTION您可以通过在选项名称前加上lqno-rq来关闭一个或多个隐含选项。并非所有选项都可以带有前缀 lqno-rq:只有其他选项隐含的选项(例如--no-D, --no-perms)或在各种情况下有不同的默认值(例如--no-whole-file, - no-blocking-io, - no-dirs)。您可以在lqno-rq前缀后指定短选项名称或长选项名称(例如 --no-R与--no-relative相同。例如:如果你想使用-a(--archive)但不想要 -o( - 所有者),而不是将-a转换为-rlptgD,您可以指定-a --no-o(或-a --no-owner)。选项的顺序很重要:如果指定--no-r -a,则 -r选项最终会被打开,与-a --no-r相反。另请注意, - files-from选项的副作用不是 位置,因为它影响几个选项的默认状态和 略微改变-a的含义(参见--files-from选项) 更多细节)。
-z, - compress使用此选项,rsync会在发送到目标计算机时压缩文件数据,从而减少数据量 正在传播 - 这对于慢速连接很有用。 请注意,此选项通常可实现更好的压缩率 通过使用压缩远程shell或a来实现 压缩传输因为它利用了隐含的 未明确发送的匹配数据块中的信息 通过连接。
-h,--human-readable输出数字采用更易读的格式。这使得大数字输出使用更大的单位,具有K,M或G. 后缀。如果指定此选项一次,则这些单位为K(1000),M (1000 * 1000),和G(1000 * 1000 * 1000);如果选项重复,则 单位是1024而不是1000的权力。
答案 1 :(得分:0)
您不能简单地使用mv命令合并两个目录。您可以使用以下任一方式:
1)您可以使用cp
和rm
命令来达到目的。
$ cp -r /var /tmp
$ rm -rf /var
2)使用rsync
,你可以实现这一目标,但rsync并不是真正的"移动"根据你的问题。它宁可从一个位置复制到另一个位置(通常是远程位置)。
$ rsync -a -v /var /tmp
$ rm -r /var
我认为这应该达到目的。干杯!