> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/on-premises/tr/destek/support-guides/v5.5.7-migration-binary-files-migration.md).

# (v5.5.7 Geçişi) İkili dosya geçişi

## İkili dosyaların taşınması

Yaklaşan ana sürüm `6.0` Server Pro ve Community Edition sürümünün yayınlanması, ikili dosyaların depolama kullanımını yarıya indirecek. Çevrimiçi bir taşıma sürümde yer alıyor `5.5.7` , yükseltmenin bir parçası olarak minimum kesinti süresi sağlayarak.

Server Pro'dan bu yana `4.x`, ikili dosyalar iki kez saklanır: "filestore" içindeki etkin dosyalar deposunda ve tam proje geçmişi sisteminde. Bundan sonra, her dosyanın tek bir kopyası tam proje geçmişi sisteminde saklanacaktır.

Birleştirilmiş depolama sistemine geçiş iki bölümden oluşur: Geçişin aşamasını kontrol eden yeni bir bayrak ve tüm etkin ve yumuşak silinmiş projeleri işleyen bir betik.

Aşamalar:

* `OVERLEAF_FILESTORE_MIGRATION_LEVEL=0` (varsayılan), dosyalar filestore'dan okunur ve oraya yazılır. Dosyalar geçmişe eşzamansız olarak yazılır.
* `OVERLEAF_FILESTORE_MIGRATION_LEVEL=1` , dosyalar geçmişten okunur, filestore'a geri dönülür ve hem filestore'a hem de geçmişe yazılır. Şuraya geri dönmek `OVERLEAF_FILESTORE_MIGRATION_LEVEL=0` mümkündür.
* `OVERLEAF_FILESTORE_MIGRATION_LEVEL=2` dosyalar yalnızca geçmişten okunur ve geçmişe yazılır. Şuraya geri dönmek `OVERLEAF_FILESTORE_MIGRATION_LEVEL=1` mümkün değildir, ancak "çevrimdışı" olarak yapılmışsa.

Veriler depolanırken [S3](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/s3) ve filestore için ayrı servis hesapları kullanırken (`OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID`) ve geçmiş (`OVERLEAF_HISTORY_S3_ACCESS_KEY_ID`): Lütfen filestore kullanıcısına blob'lar için geçmiş kovasına okuma erişimi verin `OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET` . Filestore hizmeti bundan sonra derleyici hizmetinden gelen okumaları karşılayacaktır.

{% hint style="warning" %}
İkili dosya taşımasını önce üretim dışı/sandbox bir ortamda gerçekleştirmeniz şiddetle tavsiye edilir.
{% endhint %}

{% hint style="success" %}
Standart Server Pro lisansı, uygulamayı bir üretim ortamında ve ayrıca üretim dışı/sandbox bir ortamda çalıştırmanıza izin verir; test için bir üretim dışı ortam sağlamanız şiddetle tavsiye edilir.
{% endhint %}

{% hint style="info" %}
Server Pro/CE sürümüne yükseltirseniz `6.0` ve daha sonra daha eski bir sürüme geri dönmek istediğinize karar verirseniz, tam sistem yedeğinden geri yükleme yapmalısınız.
{% endhint %}

### Geçiş prosedürü

{% stepper %}
{% step %}

#### Bir yedek oluşturun

Tam bir [yedek](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) örneğinizin, **mongo**, **redis** ve **sharelatex** dizinlerinin tutarlı bir anlık görüntüsüyle birlikte.
{% endstep %}

{% step %}

#### Güncelleyin

**Araç seti:** Şunu kullanın `$ bin/upgrade` yükseltmek için betik **araç setini** en son sürüme. Sorulduğunda, yapın **yapmamalısınız** istemi onaylayın **Yükselt** görüntü mü? — bunun yerine, elle düzenleyin **config/version** dosyayı açın ve değeri şuna ayarlayın `5.5.7`.

**Eski docker-compose.yml:** şunun sürümünü güncelleyin `sharelatex` servisi `5.5.7`.
{% endstep %}

{% step %}

#### Etkilenen proje sayısını tahmin edin

{% code overflow="wrap" %}

```bash
# Overleaf Toolkit kullanıcıları:
$ bin/docker-compose exec sharelatex /bin/bash -c "source /etc/overleaf/env.sh && source /etc/container_environment.sh && cd /overleaf/services/history-v1 && /sbin/setuser www-data node storage/scripts/back_fill_file_hash.mjs --report"

# Eski docker-compose.yml kullanıcıları:
$ docker compose exec sharelatex /bin/bash -c "source /etc/overleaf/env.sh && source /etc/container_environment.sh && cd /overleaf/services/history-v1 && /sbin/setuser www-data node storage/scripts/back_fill_file_hash.mjs --report"
```

{% endcode %}

Örnek çıktı:

{% code fullWidth="false" %}

```
Mevcut durum:
- Toplam proje sayısı: 10
- Toplam silinen proje sayısı: 5
İlerlemeyi tahmin etmek için 1000 proje örnekleniyor...
Projeler için örneklenen istatistikler:
- Örneklenen projeler: 9 (tüm projelerin %90'ı)
- Tüm karmaları mevcut olan örneklenen projeler: 5
- Karmaların geriye dönük doldurulması gereken proje yüzdesi: %44 (tahmini)
- Örneklenen projelerde, tam proje geçmişi sistemiyle karşılaştırılarak kontrol edilmesi gereken 11 dosya var.
- Örneklenen projelerde, tam proje geçmişi sistemine yüklenmesi gereken 3 dosya var (tüm dosyaların %27'si olarak tahmin ediliyor).
Silinen projeler için örneklenen istatistikler:
- Örneklenen silinmiş projeler: 4 (tüm silinmiş projelerin %80'i)
- Tüm karmaları mevcut olan örneklenen silinmiş projeler: 3
- Karmaların geriye dönük doldurulması gereken silinmiş proje yüzdesi: %25 (tahmini)
- Örneklenen silinmiş projelerde, tam proje geçmişi sistemiyle karşılaştırılarak kontrol edilmesi gereken 2 dosya var.
- Örneklenen silinmiş projelerde, tam proje geçmişi sistemine yüklenmesi gereken 1 dosya var (tüm dosyaların %50'si olarak tahmin ediliyor).
```

{% endcode %}
{% endstep %}

{% step %}

#### Proje geçmişi kuyruklarını boşaltın

{% code overflow="wrap" %}

```bash
# Overleaf Toolkit kullanıcıları:
$ bin/docker-compose exec sharelatex /overleaf/bin/flush-history-queues

# Eski docker-compose.yml kullanıcıları:
$ docker compose exec sharelatex /overleaf/bin/flush-history-queues
```

{% endcode %}

Tüm projeler boşaltılana kadar boşaltma işlemini tekrarlayın (`"project_ids":0`).

```
bulunan projeler {"project_ids":0,"limit":100000,"ts":"2025-09-01T10:35:33.353Z"}
toplam {"succeededProjects":0,"failedProjects":0}
```

{% hint style="danger" %}
"failedProjects" sıfır değilse, lütfen destek ekibiyle iletişime geçin ve ikili dosya taşımasına devam etmeyin.
{% endhint %}
{% endstep %}

{% step %}

#### Taşıma aşamasını 1'e ilerletin

Araç seti: Şunu ayarlayın `OVERLEAF_FILESTORE_MIGRATION_LEVEL=1` içindeki `config/variables.env`.

Eski docker-compose.yml: Şunu ayarlayın `OVERLEAF_FILESTORE_MIGRATION_LEVEL: '1'` içindeki `ortam` bölümüne `sharelatex` hizmeti.
{% endstep %}

{% step %}

#### Yapılandırma değişikliğini uygulayın ve örneği başlatın

Araç seti: `bin/up -d`

Eski docker-compose.yml: `docker compose up -d`
{% endstep %}

{% step %}

#### İkili dosyalara erişimi doğrulayın

Tarayıcıdaki Overleaf düzenleyicisinde bir proje açın ve bir görsel gibi ikili bir dosya seçin.
{% endstep %}

{% step %}

#### Geçiş betiğini çalıştırın

{% code overflow="wrap" %}

```bash
# Overleaf Toolkit kullanıcıları:
$ bin/docker-compose exec sharelatex /bin/bash -c "source /etc/overleaf/env.sh && source /etc/container_environment.sh && cd /overleaf/services/history-v1 && /sbin/setuser www-data node storage/scripts/back_fill_file_hash.mjs --all"

# Eski docker-compose.yml kullanıcıları:
$ docker compose exec sharelatex /bin/bash -c "source /etc/overleaf/env.sh && source /etc/container_environment.sh && cd /overleaf/services/history-v1 && /sbin/setuser www-data node storage/scripts/back_fill_file_hash.mjs --all"
```

{% endcode %}

{% hint style="danger" %}
Eğer [günlükleri kalıcı olarak saklıyorsanız](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/logging#persisting-logs) dosyaları konteynerin dışında **sharelatex** konteyner, günlükler dizini sahibinin şu kullanıcıya ayarlandığından emin olun `www-data` kullanıcı (uid=33), böylece oluşturulan günlük dosyası yazılabilir.
{% endhint %}

Çıktı şu şekilde görünmelidir:

```bash
UV_THREADPOOL_SIZE=16 ayarlayın
{"name":"default","hostname":"c25e9faaeb53","pid":971,"level":30,"backend":"fs","msg":"Arka uç yükleniyor","time":"2025-07-25T15:00:58.166Z","v":0}
Günlükler /var/log/overleaf/file-migration-2025-07-25T15_00_58_199Z.log dosyasına yazılıyor
Proje dosyası yedeklemesi başlatılıyor...
Global blob'lar yüklendi: 0
Silinmemiş projeler işleniyor...
1 proje işlendi, geçen süre 0 sn
Etkin projeler güncellendi
Silinmiş projeler işleniyor...
deletedProjects koleksiyonu boş görünüyor.

Silinmiş projeler güncellendi
Tamamlandı.

```

Geçiş başarılı olursa, çıkış kodunuz `0`olur ve son satırlar hiçbir başarısızlık olmadığını gösterir:

```bash
Tamamlandı.
```

Günlük dosyası şu şekilde görünecek (betik tarafından yazdırılan yolu kullanın):

{% code overflow="wrap" %}

```bash
$ docker cp sharelatex:/var/log/overleaf/file-migration-2025-07-25T15_00_58_199Z.log .
$ cat file-migration-2025-07-25T15_00_58_199Z.log
{"name":"file-migration","hostname":"c25e9faaeb53","pid":971,"level":30,"end":"68839a8f577b9f009d947b27 (2025-07-25T14:54:07.000Z)","msg":"paket gerçekten tamamlandı","time":"2025-07-25T15:00:58.379Z","v":0}
{"name":"file-migration","hostname":"c25e9faaeb53","pid":971,"level":30,"time":"2025-07-25T15:00:58.383Z","LOGGING_IDENTIFIER":"4effa2000000000000000000","projects":1,"blobs":6,"filesWithHash":5,"filesWithoutHash":2,"filesDuplicated":0,"filesRetries":0,"filesFailed":0,"fileTreeUpdated":0,"badFileTrees":0,"globalBlobsCount":0,"globalBlobsEgress":0,"projectDeleted":0,"projectHardDeleted":0,"fileHardDeleted":0,"mongoUpdates":1,"readFromGCSCount":7,"readFromGCSIngress":28532,"writeToGCSCount":5,"writeToGCSEgress":300,"readFromGCSThroughputMiBPerSecond":0.14925639825786063,"eventLoop":{"idle":48.277844,"active":381.53244699971054,"utilization":0.8876763888372498},"diff":{"eventLoop":{"idle":48.223536,"active":134.04030200059555,"utilization":0.7354190687027976},"projects":1,"blobs":6,"filesWithHash":5,"filesWithoutHash":2,"filesDuplicated":0,"filesRetries":0,"filesFailed":0,"fileTreeUpdated":0,"badFileTrees":0,"globalBlobsCount":0,"globalBlobsEgress":0,"projectDeleted":0,"projectHardDeleted":0,"fileHardDeleted":0,"mongoUpdates":1,"readFromGCSCount":7,"readFromGCSIngress":28532,"writeToGCSCount":5,"writeToGCSEgress":300,"readFromGCSThroughputMiBPerSecond":0.14925639825786063},"deferredBatches":[],"msg":"dosya taşıma istatistikleri","v":0}
```

{% endcode %}
{% endstep %}

{% step %}

#### Örneği durdurun

Araç seti: `bin/stop sharelatex`

Eski docker-compose.yml: `docker compose stop sharelatex`
{% endstep %}

{% step %}

#### Eski dosyaları uygulama tarafından erişilemez hale getirin

Artık eski dosyaları ikincil depolamaya taşıyabilirsiniz. Daha sonra sorun çıkması ihtimaline karşı dosyaları bir süre saklamanızı öneririz.

{% code overflow="wrap" %}

```bash
# Araç seti kullanıcıları:
$ bin/docker-compose run --rm --entrypoint mv sharelatex --no-clobber --verbose /var/lib/overleaf/data/user_files /var/lib/overleaf/data/old_user_files

# Eski docker-compose.yml kullanıcıları:
# /var/lib/overleaf içindeki varsayılan bind-mount'u kullandığınızı varsayıyoruz
$ docker compose run --rm --entrypoint mv sharelatex --no-clobber --verbose /var/lib/overleaf/data/user_files /var/lib/overleaf/data/old_user_files
# Seçici bind-mount'lar kullanıyorsanız, konteyner içindeki /var/lib/overleaf/data/user_files için bind-mount'u basitçe kaldırabilirsiniz.
```

{% endcode %}
{% endstep %}

{% step %}

#### Taşıma aşamasını 2'ye ilerletin

Araç seti: Şunu ayarlayın `OVERLEAF_FILESTORE_MIGRATION_LEVEL=2` içindeki `config/variables.env`.

Eski docker-compose.yml: Şunu ayarlayın `OVERLEAF_FILESTORE_MIGRATION_LEVEL: '2'` içindeki `ortam` bölümüne `sharelatex` hizmeti.
{% endstep %}

{% step %}

#### Yapılandırma değişikliğini uygulayın ve örneği başlatın

Araç seti: `bin/up -d`

Eski docker-compose.yml: `docker compose up -d`
{% endstep %}

{% step %}

#### İkili dosyalara erişimi doğrulayın

Tarayıcıdaki Overleaf düzenleyicisinde bir proje açın ve bir görsel gibi ikili bir dosya seçin.
{% endstep %}
{% endstepper %}

#### Çevrimdışı geçiş

İkili dosya taşıma betiği çalışırken kullanıcıların giriş yapmasını önlemek istiyorsanız, lütfen şu adımları izleyin:

* Overleaf örneğinize bir yönetici hesabıyla giriş yapın
* Şuna tıklayın: **Yönetici** düğmesine basın ve şunu seçin **Siteyi Yönet**
* Şuna tıklayın: **Editörü Aç/Kapat** sekmesi
* Şuna tıklayın: **Editörü Kapat** düğmesi
* Şuna tıklayın: **Tüm kullanıcıların bağlantısını kes** düğmesi

Bu yapıldıktan sonra, oturum açmış olan tüm kullanıcılar bakım sayfasına yönlendirilecektir ve giriş sayfasını ziyaret eden yeni kullanıcılar bakım sayfasını görecek ve **olmayacak** oturum açabilecekler.

Örneği yeniden başlatırken bu adımları tekrarlamanız gerekir. Siteyi yeniden açmak için örneği yeniden başlatmanız yeterlidir.

#### Çevrimiçi geçiş

Uygulama çalışmaya devam ederken geçiş betiklerini çalıştırmak mümkündür. Dikkate alınması gereken birkaç husus vardır:

* Taşıma süreci G/Ç açısından yoğundur, betik çalışırken kaynak kullanımını izlemelisiniz.
* Yüksek işleme eşzamanlılığıyla, içindeki olay döngüsü `filestore` hizmeti bir miktar engellenme yaşayabilir; bu da kullanıcı deneyiminin kötüleşmesine yol açar. Varsayılan değerlerle başlamanızı öneririz: `--concurrency=10` ve `--concurrent-batches=1` .
* Betiği istediğiniz zaman durdurabilirsiniz. Yeniden başlatmak, önceki projeleri doğrulayacak ve zaten işlenmiş dosyaları atlayacaktır. Bu, taşımayı daha az yoğun saatlerde (ör. gece) çalıştırmayı tercih etmeniz durumunda kullanışlıdır.

Önerimiz, proje sayınız 1000 projeden az olduğunda siteyi kapatmanız ve taşıma işlemini bakım penceresinde çevrimdışı olarak çalıştırmanızdır (taşıma betiğini ile çalıştırırken çıkan çıktıya bakın `--report`) bakım penceresinde çevrimdışı olarak çalıştırmanızdır. Proje sayısı çok fazlaysa betiği çalıştırıp ilerlemesini izleyebilir, ardından kendi durumunuza göre çevrimiçi mi yoksa çevrimdışı mı devam edeceğinize karar verebilirsiniz.

#### Eski ikili dosya verilerini temizleyin

Taşıma işlemini tamamlayıp projelerin hâlâ tüm dosyalarına erişebildiğini doğruladığınızda, içindeki eski dosya depolamasını kaldırabilirsiniz `/var/lib/overleaf/data/user_files`. Bu dosyaları bir süre tutmanızı şiddetle öneririz - önce klasörün adını değiştirerek bunları uygulama için erişilemez hale getirebilirsiniz.

### Sorun giderme

Buraya sorun giderme tavsiyeleri ekleyeceğiz. Normalde yalnızca Server Pro müşterilerine destek sunduğumuzu, ancak bu taşımanın niteliği gereği ikili dosya taşımasına özgü sorunlar yaşayan CE müşterilerine de elimizden gelen en iyi desteği sağlamaya çalışacağımızı lütfen unutmayın.

İkili dosya taşıma betiği başarısız olursa (yani bir hatayla çıkarsa veya sıfırdan farklı sayıda başarısız proje yazdırırsa), lütfen aşağıdaki ayrıntıları destek ekibimize e-posta ile gönderin [support+filestoremigration@overleaf.com](mailto:support+filestoremigration@overleaf.com?subject=Binary%20file%20migration%20problem\&body=Instance%20Type%3A%20CE%20or%20Server%20Pro%20%28delete%20as%20appropriate%29%0A%0AInstallation%20Type%3A%20Overleaf%20toolkit%20or%20docker-compose.yml%20or%20other%20%28delete%20as%20appropriate%29%0A%0AScript%20output%3A%0A%0Abin%2Fdoctor%20output%20%28if%20using%20toolkit%29%3A%0A), şu ayrıntılarla:

Konu: İkili dosya taşıma sorunu

İçerik:

* Örnek Türü: CE veya Server Pro (uygun şekilde silin)
* Kurulum Türü: Overleaf toolkit veya `docker-compose.yml` veya diğer (uygun şekilde silin)
* Sürüm: 5.5.x (araç seti: `$ cat config/version`)
* Geçiş betiği çıktısı (bu, kapsayıcı içinde şu konumda bulunmalıdır `/var/log/overleaf`)
* Rapor: (taşıma betiğini ile çalıştırın `--report`)
* İşlenen projeler: (betiğin son çalıştırmasına göre)
* Geçişin süresi:
* `bin/doctor` çıktı (toolkit kullanırken)
* Toolkit sürümü: `$ git rev-parse HEAD` (Toolkit kullanırken)

E-postaya servislerin `filestore` hizmetinin günlükünü e-postaya ekleyin. Şurada bulabilirsiniz `/var/log/overleaf/filestore.log` içinde `sharelatex` kapsayıcı ve bunları şu şekilde dışa aktarın:

```bash
$ docker cp sharelatex:/var/log/overleaf/filestore.log .
# <timestamp> yerine betik tarafından yazdırılan zaman damgasını koyun
$ docker cp sharelatex:/var/log/overleaf/file-migration-<timestamp>.log .
```

Lütfen bunları eklemeden önce günlük dosyalarındaki herhangi bir hassas bilgiyi karartın.

#### Eksik dosyalar

Server Pro/CE'nin eski sürümleri, kullanıcı yüklemeleri tamamlanmadan önce dosya ağacı girdileri oluşturuyordu; bu da bir yükleme başarısız olduğunda dosyaların eksik görünmesine neden olabiliyordu. Tüm dosya ağaçları işlenirken bu durumların bir kısmını hata olarak raporlanmış halde bulabilirsiniz.

Eksik dosya sayısı azsa, bu durumları elle gözden geçirmeyi ve bunları tarayıcıdaki düzenleyiciden silmeyi düşünün.

Eksik dosya sayısı fazlaysa, destek ekibiyle iletişime geçmeyi düşünün; yukarıdaki e-posta şablonuna bakın.

#### Bozuk dosya ağaçlarını bulma

Geçiş, bozuk bir dosya ağacına sahip projelerde başarısız olabilir (örneğin, dosya adlarının boş olduğu durumlarda). Bu sorunların bir listesini şunu kullanarak bulabilirsiniz `find_malformed_filetrees` veritabanındaki tüm projeleri kontrol eden betik:

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web && /sbin/setuser www-data node scripts/find_malformed_filetrees.mjs > /tmp/malformed-file-trees.json"
```

{% endcode %}

Geçersiz yolları düzeltmek için şunu kullanın `fix_malformed_filetree` betiğini, her hatalı yol için komutu bir kez çalıştırarak:

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web && /sbin/setuser www-data node scripts/fix_malformed_filetree.mjs --logs=/tmp/malformed-file-trees.json"
```

{% endcode %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/on-premises/tr/destek/support-guides/v5.5.7-migration-binary-files-migration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
