アプリ版:「スタンプのみでお礼する」機能のリリースについて

2つのパソコンのデータの同期を取りたいのですが、同じデータが2台のパソコンでは違うディレクトリの下に保存してあるものが多数あります。
たとえば、パソコンA:計画\H20\東北\仙台と、パソコンB:計画\2008\東北\仙台 が同じデータといった具合です。手持ちの同期ソフト、たとえばFireFileCopy等で同期を取ると、パソコンBのディレクトリ「計画」の下に、H20\東北\仙台をコピーして、2008\東北\仙台を削除します。コピーしたファイルと削除したファイルは実は同じ内容ですから、これを「H20\東北フォルダをつくり、そこに2008\東北\仙台を移動する」といった動作に変更できれば、無駄なコピーをする必要が無くなり同期の効率があがると思います。そのような同期ソフトありませんか?

A 回答 (10件)

横から失礼します。


質問者さんが、同期ソフトとおっしゃっているので、回答者さんとの誤解を産んでいるのではないでしょうか?
質問者さんの望まれているのは、同期ソフトというより、うまいネーミングが思いつきませんが、「ファイル構造変形ソフト」のような気がします。
残念ながら私はそのようなソフトを知りませんが、いったん同期ソフトを忘れて検索されたらいかがでしょう?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
おっしゃるとおり、同期ソフトではないのかもしれません。

最終的には同期ソフトと同じ結果を得たいのですが、今回私が希望する機能は、同期ソフトそれ自身ではなく、同期ソフトを実行する前処理をするソフトが欲しいことがわかりました。
私が欲しいのは、
パソコンB:計画\2008\東北\仙台を パソコンAを参照して、計画\H20\東北\に移動させるソフト
です。このソフトでは、一切のコピーも削除も行わず、ファイルの移動だけを行うというものです。
引き続きそのようなソフトご存知ならお教えください。
また、どのようにして検索したらよいのか、ヒントがあればご教示よろしくお願いいたします。

一応プログラムの骨子はできたのですが、すでにあるなら作らずに使わせてもらいたいです。
/*
a[i] = "\\program\\free\\backup\\copysync.exe 1,472,249 2008-08-30 16:31:20"
のようなパス名付のファイル名および、ファイルサイズ、タイムスタンプをあらわす文字列
f1[i]=j ... a[i] == b[j] の意味
f2[i]=j ... a[i] と b[j] がパス名は異なるが対応するファイルの意味
*/

void main() {
 char **a,**b;
 int *f1,*f2;
 GetFileNames(from, a); sort(a);
 GetFileNames(to, b); sort(b);
 match1(a,b, f1);  // パス名込みで対応付け
 match2(a,b,f1, f2);  // ファイル名・タイムスタンプ・ファイルサイズで対応付け

 move(a,b, f2); // 対応表f2に従いファイルの移動
}

お礼日時:2008/09/01 21:06

>>しかし、「ファイルの内容が同じ」かどうかを判定するにはそのファイルを


>>開いて内容を見る(プログラム的な意味でね)必要がありますよね。
>違います。ファイル名・ファイルサイズ・タイムスタンプだけで比較するので、
>ファイルの内容を見る必要はありません。他の同期ソフトも、ファイルの中身までみてないと思いますよ。

他の同期ソフトがタイムスタンプでファイルが同一かどうか判断できているのは
「同じディレクトリ構造の A: 側と B: 側にあるファイル」を比較するだけで済んでいるためです。

B: 側の PC に同じファイル名(ディレクトリは異なる)でタイムスタンプも同じで
ファイルサイズも同じであるが、内容が異なる複数のファイルが存在する可能性を排除できません。

そのような状況で、ファイルの内容を確認せずに「正しい場所」にファイルを移動することは不可能です。
    • good
    • 0
この回答へのお礼

回答、再度ありがとうございます。
>他の同期ソフトがタイムスタンプでファイルが同一かどうか判断できているのは
>「同じディレクトリ構造の A: 側と B: 側にあるファイル」を比較するだけで済んでいるためです。
>
>B: 側の PC に同じファイル名(ディレクトリは異なる)でタイムスタンプも同じで
>ファイルサイズも同じであるが、内容が異なる複数のファイルが存在する可能性を排除できません。
なるほど。同一ファイルの判断基準が、私が希望するレベルと違うということですね。
koko_u_さんも、「内容が異なる複数のファイルが存在する可能性がある」ことを認めるのであれば、「同じディレクトリ構造の A: 側と B: 側にあるファイル」をタイムスタンプ・ファイルサイズを比較するだけでは同じと判断できないことは認めるわけですよね。
とりあえず、私の希望では、「ファイル名・タイムスタンプ・ファイルサイズが等しければ、同じファイルとみなす」という判断基準で十分です。

私の希望する仕様の同期ソフト、やっぱりないのでしょうかね。
自作して作れない内容ではないので、誰かが作っていると思ったのですが・・
お付き合いありがとうございました。

お礼日時:2008/08/29 21:45

>やってほしい処理:パソコンBにおいて、 


cd パソコンB:計画\2008\東北
mv 仙台 計画\H20\東北\

既にアイデアがいろいろ出ていますけど、既成のアプリケーションでそれのできるものを私は知らないです。私自身、必要性を感じないです。
この程度なら自作した方が良いような気がします。
    • good
    • 0
この回答へのお礼

回答、再度ありがとうございます。
無いようなので、自作することにします。
お付き合いありがとうございました。

お礼日時:2008/08/29 21:25

>(私が望む同期ソフト)パソコンAとパソコンBのすべてのファイルを見て、


> AB同じ場所にあるファイル、違う場所にある同じ内容のファイル、
> 片方だけにあるファイルに分類し、片方だけのファイルを削除・コピーし、
> 違う場所にあるファイルを正しい(パソコンAと同じ場所)に移動する方法

やーっと、わかった。

しかし、「ファイルの内容が同じ」かどうかを判定するにはそのファイルを
開いて内容を見る(プログラム的な意味でね)必要がありますよね。

ということは、同期プログラムが A: で動いているとして、B: 側にあるファイルの内容を
A: 側のプログラムが読めるように「コピーしてくる」必要があります。

それって、効率化の意味を失っているのではないでしょうか?

同じファイルが A: B: 両方にあるかを判断するまでもなく、
さっさとコピーしてしまうのが早いのではないですか?
    • good
    • 0
この回答へのお礼

>やーっと、わかった。
ありがとうございます。

>しかし、「ファイルの内容が同じ」かどうかを判定するにはそのファイルを
>開いて内容を見る(プログラム的な意味でね)必要がありますよね。
違います。ファイル名・ファイルサイズ・タイムスタンプだけで比較するので、ファイルの内容を見る必要はありません。他の同期ソフトも、ファイルの中身までみてないと思いますよ。

お礼日時:2008/08/29 01:23

>こんな動作をする同期ソフトを探しているんです。


広い世の中、もしかするとご要望のソフトウェアもあるかもしれませんが、
色々考えると切りがないので、大抵のソフトは「ディレクトリ構造を含めて」コピーします。

例えば

A:\dira\file1.txt
A:\dira\file2.txt



B:\dirb\file1.txt
B:\dirb\file2.txt

がディレクトリ構造を無視して「同期」しているとして、A: 側の file1.txt と file2.txt はやっぱり別に分けたいなあ、と思って

A:\diraX\file1.txt
A:\diraY\file2.txt

としても、中にあるファイルは同じだから B: 側は変更されないんですよね?
本当にそのような動作を望んでいるのですか?
    • good
    • 0
この回答へのお礼

>ディレクトリ構造を無視して「同期」しているとして、
いえ、同期していないですよ。同期するとは、
 B:\dirb\file1.txt
 B:\dirb\file2.txt

 B:\dira\file1.txt
 B:\dira\file2.txt
にすることです。

>としても、中にあるファイルは同じだから B: 側は変更されないんですよね?
違いますよ。同期を取ってほしいので、A:側が、
 A:\diraX\file1.txt
 A:\diraY\file2.txt
に変わったら、B: 側も
 B:\diraX\file1.txt
 B:\diraY\file2.txt
に変更してほしいのです。

まだ、私の希望が正しく伝えら得ていないのでしょうか?
しつこいですが、もう一度言葉を換えて希望を述べます。
同期ソフトなので、パソコンAとパソコンBをまったく同じ(同じディレクトリに同じファイルがある状態)にしたいのです。そのためには以下の3種類の方法が考えられます。
(完全コピー型)パソコンBのファイルをすべて削除して、パソコンAのファイルをすべてコピーする方法。

(多くの同期ソフト型)パソコンBにパソコンAと同じ場所にある同じファイルには手をつけず、Bにだけあるファイルを削除して、Aにだけあるファイルをコピーする方法

(私が望む同期ソフト)パソコンAとパソコンBのすべてのファイルを見て、AB同じ場所にあるファイル、違う場所にある同じ内容のファイル、片方だけにあるファイルに分類し、片方だけのファイルを削除・コピーし、違う場所にあるファイルを正しい(パソコンAと同じ場所)に移動する方法

お礼日時:2008/08/29 00:03

>そうですか? 一般の同期ソフトでも、ファイル名、タイムスタンプ、ファイルサイズが等しければ、


>同じデータであると判断して、コピーは行いませんよね。

それは「ディレクトリ構造が同じ」だから可能なんですね。
usatan2 さんが例に挙げていた内容では、

"計画\H20\東北\仙台" にあるファイルが "計画\2008\東北\仙台" にあることは
ソフトウェアにはわかりません。

同期先も同じ階層構造 "計画\H20\東北\仙台" であった場合に初めて、
中のファイルのサイズやタイムスタンプを比較できるのです。

"計画\H20\東北\仙台" の同期先が "計画\2008\東北\仙台" かもしれず、あるいは
"計画\2008年\東北\仙台" かもしれず、はたまた "計画\平成20年\東北\仙台" かもしれないような
状況に対応することは不可能です。

唯一可能な対応が「そうなめ」という意味です。
    • good
    • 0
この回答へのお礼

再度回答ありがとうございます。
>唯一可能な対応が「そうなめ」という意味です。
そうです。まさにそのとおりの処理を希望しています。
ファイル名を「そうなめ」して、必要最小限のデータのコピーで済ます同期ソフトを探しているのです。

>"計画\H20\東北\仙台" の同期先が "計画\2008\東北\仙台" かもしれず、あるいは
>"計画\2008年\東北\仙台" かもしれず、はたまた "計画\平成20年\東北\仙台" かもしれないような
>状況に対応することは不可能です。
はじめに見つかったファイルを移動させれば十分と思いますので、別に困らないのではないでしょうか。
アルゴリズムとしては、
1)まず、ファイルすべてをリストアップする。
2)同じディレクトリの同じファイルに同期済みの印をつける
3)印のないファイル同士でペアを作り、移動の印をつける
4)対応のつかなかったファイルをパソコンBから削除する
5)パソコンB内の移動の印のついたファイルを移動する
6)対応のつかなかったパソコンAのファイルをパソコンBにコピーする
以上
こんな動作をする同期ソフトを探しているんです。どこかにありませんか?

お礼日時:2008/08/28 22:30

>どちらのソフトでも、ファイルの移動ではなく、削除・コピーを行っていましたけど



ちょっと待って下さい。
移動って何ですか?
同期というのは、同じ内容にする処理です。
もしかして、元データは消して異動先だけにデータを残せと言うのでしたらそれは同期とは言いません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
>移動って何ですか?
ファイルやディレクトリをあるフォルダから別のフォルダに移動するという意味です。

>同期というのは、同じ内容にする処理です。
そうです。うまく私の希望が伝わっていないようなので、言い直します。

やってほしい処理:パソコンBにおいて、 
cd パソコンB:計画\2008\東北
mv 仙台 計画\H20\東北\

実際にソフトが行った処理
copy パソコンA:計画\H20\東北\仙台 パソコンB:計画\H20\東北\
del パソコンB:計画\2008\東北\仙台

です。

お礼日時:2008/08/28 22:16

>パソコンBに「計画\H20\東北」フォルダが無ければ作り、「計画\2008\東北\仙


台」ファイルをそこに移動する、ということをやってくれるソフトが欲しいので
す。

実際にやってますよ。
同期の単位は上位のフォルダ同士になりますが、対象とするフォルダを比較して、その中にフォルダがなければフォルダは自動作成されますよ。
それが同期というものです。
    • good
    • 0
この回答へのお礼

再度、回答ありがとうございます。
>実際にやってますよ。
えっ、本当ですか?
私の設定が悪いのかも知れませんが、確認したところ、どちらのソフトでも、ファイルの移動ではなく、削除・コピーを行っていましたけど・・・
ファイル移動となる設定方法をお教えください。重ねてよろしくお願いいたします。

お礼日時:2008/08/28 13:46

フォルダアップデートマネージャ


http://www.vector.co.jp/soft/winnt/util/se297726 …
Realsync
http://www.vector.co.jp/soft/win95/util/se061150 …

前者は、設定した複数jのフォルダを個別に同期処理できるメリットがあります。もちろん、一括して処理することもできます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
紹介くださったソフトは、ちょっと違う気がします。

パソコンBに「計画\H20\東北」フォルダが無ければ作り、「計画\2008\東北\仙台」ファイルをそこに移動する、ということをやってくれるソフトが欲しいのです。もっと賢ければ、パソコンBのフォルダ名「「計画\2008\東北\」を「計画\H20\東北」を変更してくれるだけでもうれしいです。ちょっと考えるだけでも例外が多発しそうで、そのようなソフトは作るのが大変そうですが・・・

お礼日時:2008/08/28 10:44

>無駄なコピーをする必要が無くなり同期の効率があがると思います。


確かに「コピー」は減るかもしれませんが、「同じデータ」であることを判断するのに非常に時間がかかると思います。

usatan2 さんは H20\東北\仙台 と 2008\東北\仙台 が「同じと知っている」のでよいですが、
ソフトウェアは知るよしもないので、単純に考えれば、
両方の PC にある「全てのファイルをそうなめ」するしか方法はなさそうですね。

そんなことに時間を取られるくらいなら、多少無駄でもコピーしてしまった方がトータルとして早いと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>確かに「コピー」は減るかもしれませんが、「同じデータ」であることを判断するのに非常に時間がかかると思います。

そうですか? 一般の同期ソフトでも、ファイル名、タイムスタンプ、ファイルサイズが等しければ、同じデータであると判断して、コピーは行いませんよね。つまり、「全てのファイルをそうなめ」する必要はなく、「すべてのファイル名をそうなめ」するだけで済むと思います。たとえばファイル「仙台」が600MBの動画ファイルの場合、削除してコピーする現状と、移動で対処する場合ではその差は歴然と思います。削除とコピーを組み合わせる現状では、時間がとられるだけでなく、ファイルの断片化を促進する可能性が高いことになりますので、出来れば避けたいのです。

お礼日時:2008/08/28 10:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!