0

我在 linux 服务器上有一个大文件。相同的文件位于 linux 客户端上。服务器文件将定期修改。我希望能够仅下载更改并将它们应用于客户端上的文件。我想知道是否有一些内置的 linux 命令可以做这样的事情。不幸的是,我不相信 rsync 是一种选择。“客户端”是 linux 的嵌入式版本,具有以下功能:

 [, [[, arping, ash, awk, basename, brctl, bunzip2, bzcat, cat, chgrp, chmod, chown, chroot, clear, cmp, cp, crond,
    crontab, cut, date, dd, df, dirname, dmesg, du, echo, egrep, env, expr, false, fgrep, find, free, fsync, grep, gunzip,
    gzip, halt, head, hexdump, hostid, hwclock, id, ifconfig, init, insmod, kill, killall, klogd, less, ln, lock, logger,
    logread, ls, lsmod, md5sum, mkdir, mkfifo, mknod, mktemp, mount, mv, nc, netmsg, netstat, nice, nslookup, ntpd, passwd,
    pgrep, pidof, ping, ping6, pivot_root, pkill, poweroff, printf, ps, pwd, reboot, reset, rm, rmdir, rmmod, route, sed,
    seq, sh, sleep, sort, start-stop-daemon, strings, switch_root, sync, sysctl, syslogd, tail, tar, tee, telnet, telnetd,
    test, time, top, touch, tr, traceroute, true, udhcpc, umount, uname, uniq, uptime, vconfig, vi, watchdog, wc, wget,
    which, xargs, yes, zcat

我想知道最有效的选择是否是在服务器上创建一个文件,该文件中的任何新行都以“+”开头,任何删除的行都以“-”开头,任何修改的行都是“-” " 和 "+" ...然后以某种方式获取 awk、sed 和/或 grep 以根据 "diff" 文件更新文件。我无法想象我正在做的事情是那么独特。任何指针?

4

1 回答 1

0

diff和来做patch。这些老式工具体积小且广泛可用。我会这样使用它们:

# server:
diff -wu oldfile newfile > file.patch

# now copy the patch file from server to client

# client:
patch < file.patch

就这么简单。但是你可以通过各种选项变得更加花哨(我刚刚展示了使用 -w 忽略空格)。

于 2013-10-08T11:19:11.390 回答