問題タブ [hardlink]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - Windows ハード リンク - 書き込みから保護する
ある時点でダウンロードしてからカスタマイズするファイルがたくさんあります。オリジナルを保持したいが、変更も許可し、ハードリンクを使用してこれを行いたい.
最初にファイルのバッチをある種のリポジトリにダウンロードしてから、自分の作業場所へのハード リンクを作成していると思います。ユーザーが自分のファイルを削除できるようにしたい (たとえば、ハード リンクを削除する) のですが、問題はありません。
ただし、彼に書き込みを許可したい場合は、元のファイルをリポジトリにそのまま残して、後で元に戻すことができるようにします。実際にファイルをロックして、ファイルを削除して再作成するように強制することなく、これを透過的に行うにはどうすればよいですか?
どんなアイデアでも大歓迎です、ありがとう。
コスミン
linux - How to create a copy of a directory on Linux with links
I have a series of directories on Linux and each directory contains lots of files and data. The data in those directories are automatically generated, but multiple users will need to perform more analysis on that data and generate more files, change the structure, etc.
Since these data directories are very large, I don't want several people to make a copy of the original data so I'd like to make a copy of the directory and link to the original from the new one. However, I'd like any changes to be kept only in the new directory, and leave the original read only. I'd prefer not to link only specific files that I define because the data in these directories is so varied.
So I'm wondering if there is a way to create a copy of a directory by linking to the original but keeping any changed files in the new directory only.
bash - NAND フラッシュで突然作成されたハード リンク
私が (usr1 として) 所有している構成ファイルと、元の構成ファイルからコピーするために OS デーモンで (5 分ごとに) 作成した一時ファイルとの間にハード リンクが突然作成されたことに驚きました。
元のファイルにコピーした後、 rename(*file2, *file1); を使用します。config.txt.tmp へのトレースを強制終了する C で
ディレクトリは mnt /sram ドライブ上で所有されているルートであり、組み込みマシンに対するルート アクセス権を持つ人はいません。ストレージ メディアは、組み込み Linux 2.6.10 の NAND フラッシュ SRAM です。
ls -l
ショー
config.txt.tmp が作成され、config.txt からコピーされ、構成パラメータが config.txt に送信され、5 ~ 7 行の C 行のみでアトミックに削除されます。
ディレクトリはルート所有であり、ハード リンクを作成する方法はありません。
低レベル関数での「ハードリンク」作成の説明はありますか? 競合状態に直面している可能性はありますか? それとも、フラッシュを介したストレージ用のカーネル コードでしょうか? それともLinuxのバグ?
私のコードは 5 年以上、100 台のマシンで実行されましたが、最近この問題が発生したのは 1 台のマシンだけでした。
filesystems - NTFS ボリュームで CreateHardLink() がエラー コード 1 で失敗する (関数が正しくない)
NTFS ハード リンクを利用するデスクトップ アプリケーションがあります。このアプリケーションは、世界中の 40 万台を超えるユーザー PC に配布され、正常に使用されています。
ただし、CreateHardLink() 関数が一貫してエラー コード 1 (関数が正しくない) で失敗するお客様が 1 人います。これは、同じ企業内の複数のマシンで発生します。これらのマシンはすべて Windows XP を実行しており、問題は NTFS パーティションで発生します。
ボリューム ファイル システムが実際に NTFS であることを確認するために fsutil.exe を実行するようにユーザーに依頼しました。
何が原因でしょうか?
linux - gitconfigファイルをハードリンクできません
すべてのドットファイルと構成ファイルを保存するためのgitリポジトリを作成しようとしています。私のアイデアは、気になるすべてのファイルへのハードリンクを作成し、それらのリンクをリポジトリに変換できる独自のディレクトリに保存することでした。
〜/ .gitconfigファイルを使用しているのに、少し問題が発生しました。'git config'コマンドを実行するたびに、作成したリンクが正しい場所を指していないようです。たとえば、リポジトリ内のファイルが正しく更新されなくなりました。
これは、シェルとインタラクティブRubyを使用してファイルのリンク状態を判別する例です。
これは、gitが.gitconfigファイルを書き込んでいる方法と関係があると思います。なぜこれが起こるのか誰かが知っていますか、または回避策のための創造的なアイデアがありますか?
macos - .dmgファイルを準備するときに冗長ファイルをマージする方法はありますか?
私の会社は、いくつかのQtベースのMacOS /XGUIアプリケーションを含むパッケージを出荷しています。パッケージは.dmgファイルとして出荷され、「インストール」とは、.dmgアイコンをダブルクリックしてから、1つまたは複数のアプリケーションアイコンを保持したい場所(たとえば、自分のアプリケーションフォルダ)にドラッグすることです。
これは問題なく動作しますが、.dmgファイルはかなり大きい(たとえば40 + MB)ので、ダウンロードにかかる時間を短縮するために、可能であればサイズを小さくしたいと思います。私が気づいたことの1つは、パッケージ内のすべてのアプリケーションに共通の多数の大きなファイル(Qtライブラリ、グラフィックリソースファイルなど)があり、現在、これらの各ファイルの個別のコピーがblah内に含まれていることです。含まれている各アプリケーションのapp/Contentsフォルダー-おそらくこれが.dmgファイルを非常に大きくしている理由です。
だから私の質問は、これらのファイルのいくつかのコピーを含める必要がないように.dmgを変更する方法はありますか?したがって、それほど大きくはありませんか?理想的には、ユーザーが特別なインストーラープログラムを実行する必要がなく、ユーザーがアプリケーションを別の(または予期しない)フォルダーに移動したり、それらのいずれかを削除したりしても、アプリケーションが破損することなく、これを実行したいと思います。
これはハードリンクにとって理想的なアプリケーションのようです。つまり、1つのアプリケーションに実際のファイルが含まれ、他のアプリケーションにそれらのファイルへのハードリンクが含まれるように、.dmgファイルへの入力を準備します。 .dmgファイルからアプリケーションを解凍すると、ファイルは互いに論理的に独立したままになります(特に、ユーザーがアプリケーションAを移動または削除しても、アプリケーションBは動作を停止しません)。ただし、AFAICT MacOS / Xは、TimeMachineという名前ではないアプリケーションのハードリンク[編集:ディレクトリへ]をサポートしていません。:^(
visual-studio-2010 - Mercurial リポジトリと MSVS - 2 つのプロジェクトと共有ファイル
私は現在、MS VS2010 で、VS の各部分に 1 つのプロジェクトを持つクライアント サーバー アーキテクチャに基づくアプリケーションを開発しています。最近まで、どちらも Hg に独自のリポジトリを持っていましたが、現在共有されているファイルがかなりあるため、それらを一緒に移動することにしました。
ハード リンクを使用して、1 つのファイルの変更が他のフォルダー/プロジェクトの同じファイルに反映されるようにしています。ただし、リポジトリのクローンを作成したり、オンライン リポジトリからチェックアウトしたりすると、ハード リンクが壊れます。
Hg とのソフト リンクとハード リンクの両方について、できる限り多くのことを調べましたが、現時点では、どちらも優れたポータブル ソリューションではないようです。2 つのプロジェクト間でファイルを共有する方法として、どのような方法をお勧めしますか?
よろしく、マックス。
macos - ファイルシステムに「弱く参照される」ハードリンクを作成することは可能ですか?
一部のプログラミング言語には、強く参照されているオブジェクトと弱く参照されているオブジェクトを区別する機能があり、すべての強い参照が消えた後、弱いオブジェクトがガベージコレクションの候補になります。
ファイルシステムのハードリンクにも同様の概念がありますか?理論上のAPIは次のとおりです。
シンボリックリンクはこれを提供しますが、Aのシンボリックリンクは(基になるファイルがなくなっても)ディスクに表示されます。さらに、同じiノードを直接指すことを利用したいと思います(移動の追跡、名前の変更メインファイルなど)。実際にこれをサポートしているファイルシステム、またはそのようなものはありますか?
c - dup() を使用して複製ファイル記述子を作成することと、ハード リンクを作成することの違いは?
dup を使用して、開いているファイルのファイル記述子を複製するこのプログラムを試しました。
この同じファイルへのハード リンクを作成し、同じファイルを開いて、プログラム内のファイルの内容を読み取りました。
私の質問は、違いは何ですか?
dup がファイルへの実行時の抽象化を提供し、ハードリンクがファイルシステムの実装をより参照していることを理解していますが、一方を他方よりも使用する必要性を理解していません。
一方を他方よりも使用する利点は何ですか?
ファイル記述子を作成する代わりに同じファイルの場所を参照したい場合、またはその逆の場合に、ハード リンクを明示的に参照できないのはなぜですか?
Linux と標準の C ライブラリを使用しています。
python - Windows7でディレクトリ全体のコンテンツをハードリンクします
これをアーカイブするための最良の方法はどれですか?ソースフォルダーと宛先フォルダーを入力として受け取り、ソースフォルダーを再帰的に繰り返し、ファイルごとに宛先フォルダーにそのファイル(同じ名前)へのハードリンクを作成するバッチスクリプトについて考えていました。
forループを使用してこれを実行しようとしましたが、バッチスクリプトの使用経験が限られており、ソースフォルダー名を分割して宛先フォルダーに同じディレクトリ構造を再作成する方法がわかりません。ヒントをいただければ幸いです。
PD:ソリューションは任意のスクリプト言語を使用できます。私は現在Python2.7.3をインストールしています