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 に答える