Overwrite file in copying IF content to of them not the same

user1016265 picture user1016265 · Oct 27, 2011 · Viewed 16.4k times · Source

I have a lot of files from one side (A) and a lot of other files in other place (B)

I'm copying A to B, there are a lot of files are the same, but content could be different!

Usually I used mc (Midnight Commander) to do it, and selected "Overwrite if different size". But there is a situation when size are the same, but content is different. In this case mc keeps file in B place and not overwrite it.

In mc overwrite dialog there is a work "Update" I don't know what it is doing? In help there is no such information, maybe this is a solution?

So I'm searching solution which can help me copy all files from A to B and overwrite files in B place if they exists AND content is different from A.

if file in "B" place exists (the same name) and content is different it has to be overwritten by file from "A" place every time.

Do you know any solution?

Answer

Grmpfhmbl picture Grmpfhmbl · May 29, 2016

I'd use rsync as this will not rely on the file date but actually check whether the content of the file has changed. For example:

#> rsync -cr <directory to copy FROM> <directory to copy TO>

Rsync copies files either to or from a remote host, or locally on the current host (it does not support copying files between two remote hosts).

-c, --checksum    skip based on checksum, not mod-time & size
-r, --recursive   recurse into directories

See man rsync for more options and details.